Zrzur Entwickler

Ereignisse

Reagiere ohne Befehle auf das, was auf einem Server geschieht: Antworte auf !ping, logge Reaktionen und Mitglieder, die gehen.

Bevor du beginnst

Erstelle eine Anwendung, installiere sie auf einem Testserver und setze drei Umgebungsvariablen (siehe Starte deinen Bot):

export ZRZUR_BOT_TOKEN=YOUR_BOT_TOKEN
export ZRZUR_API_URL=https://api.zrzur.com
export ZRZUR_WS_URL=wss://events.zrzur.com

Schalte dann im Entwicklerportal den Intent Nachrichteninhalt für den Bot ein: Ohne ihn bekommt der Bot Nachrichten ohne Text, und wenn er angefordert wird, aber aus ist, scheitert die Verbindung. Siehe Intents.

Der Code

// Gateway events: answer "!ping", log reactions and members leaving.

import { Client, Intents } from "@zrzur/sdk/bot";

const bot = new Client({
  token: process.env.ZRZUR_BOT_TOKEN,
  apiUrl: process.env.ZRZUR_API_URL,
  wsUrl: process.env.ZRZUR_WS_URL,
  // privileged: switch it on for the bot in the Developer Portal first
  intents: [Intents.Default, Intents.MessageContent],
});

// Message: every new message in a channel the bot can see (its own are skipped)
bot.onMessage(async (message) => {
  if (message.content !== "!ping") return;
  await bot.typing(message.channel);
  const started = Date.now();
  const reply = await bot.messages.reply(message, "pong");
  await bot.messages.edit(
    message.channel,
    reply._id,
    `pong (${Date.now() - started} ms)`,
  );
});

// MessageReact: someone added a reaction
bot.onReaction(({ messageId, userId, emoji }) => {
  console.log(`reaction ${emoji} by ${userId} on ${messageId}`);
});

// Any other event by its type name
bot.on("ServerMemberLeave", (event) =>
  console.log(`member ${event.user} left ${event.id}`),
);

await bot.login();
console.log("ready");

Starte es mit node events.mjs.

Probiere es aus

Sende !ping in einem Kanal, den der Bot sehen kann.

Was es zeigt