Aki 836ae4c778 fix: don't drop role_mentions when hydrating messages (#181)
`hydrateInternal` resolves incoming payload keys using `keyMapping[key] ?? key` before invoking `functions[targetKey]`. Because `keyMapping` included entries for `mentions` and `replies` but missed `role_mentions`, the target key remained as its raw API string (`role_mentions`). Since no matching handler function existed under that name, it threw an error that was silently caught and logged as "Skipping key ... during hydration!".

Because of this missing mapping, `roleMentionIds` was never populated during hydration and its extractor function went completely unused. Any code relying on it received `undefined`. Specifically, `Message.mentioned` checks `roleMentions?.some((role) => role.assigned)`, which meant it could never return true for role-based mentions.

Adding `role_mentions` to the key mapping allows the existing extractor function to run as intended.

Signed-off-by: Aki <aki@akiworks.xyz>
2026-08-07 22:47:03 -06:00
2023-04-08 10:57:11 +01:00
2023-04-07 09:58:47 +01:00
2026-07-29 17:37:54 -06:00
2025-03-14 13:04:35 -04:00

stoat.js

stoat.js stoat-api

stoat.js is a JavaScript library for interacting with the Stoat API

Requirements

To use this module, you must be using at least:

  • Node.js v22.15.0 (LTS) in ES module mode
  • or Deno v2.2 (LTS)

Example Usage

import { Client } from "stoat.js";

let client = new Client();

client.on("ready", async () =>
  console.info(`Logged in as ${client.user.username}!`),
);

client.on("message", async (message) => {
  if (message.content === "hello") {
    message.channel.sendMessage("world");
  }
});

client.loginBot("..");

Reactivity with Signals & Solid.js Primitives

All objects have reactivity built-in and can be dropped straight into any Solid.js project.

const client = new Client();
// initialise the client

function MyApp() {
  return (
    <h1>Your username is: {client.user?.username ?? "[logging in...]"}</h1>
  );
}

Stoat API Types

Warning

It is advised you do not use this unless necessary. If you find somewhere that isn't covered by the library, please open an issue as this library aims to transform all objects.

All stoat-api types are re-exported from this library under API.

import { API } from "stoat.js";

// API.Channel;
// API.[..];
S
Description
Typescript library for interacting with Stoat
Readme MIT 17 MiB
Latest
2026-01-16 13:28:35 -05:00
Languages
TypeScript 99.4%
JavaScript 0.5%