RawtohRawtoh/Docs
Documentation

Module Discord

Un bot Rawtoh dans votre serveur Discord — messages, réactions, rôles, MP et commandes slash.

Le module Discord ajoute le bot Rawtoh à votre serveur. Tout ce qui s’y passe — messages, réactions, arrivées de membres, commandes slash — arrive sous forme d’événements, et vos actions peuvent publier, réagir, attribuer des rôles ou répondre à une commande.

Premiers pas

  1. Ouvrez le site du module Discord et connectez-vous avec votre compte Rawtoh — même session que le tableau de bord
  2. Choisissez votre organisation et cliquez sur Add to a Discord server. Discord demande dans quel serveur ajouter le bot ; il vous faut la permission Gérer le serveur
  3. De retour sur le site du module, cliquez sur Installer avec Rawtoh. Le serveur devient une instance de module dans votre organisation. Vous devez avoir le rôle propriétaire

Chaque serveur est une instance à part : un serveur communautaire et un serveur de modération cohabitent, ciblés avec module("discord", "<instance>"). Un serveur n’appartient qu’à une organisation à la fois.

Les identifiants de salons, rôles, membres et messages sont des snowflakes Discord. Pour en copier un, activez le mode développeur dans Discord (Paramètres → Avancés), puis clic droit sur un salon, un rôle ou un membre et Copier l’identifiant. channel.list et role.list les renvoient aussi.

Événements

ÉvénementDescription
message.createUn message est publié dans le serveur (hors messages du bot). Payload : id, channel_id, author, content, timestamp, reply_to
message.deleteUn message est supprimé
reaction.addQuelqu’un réagit à un message. emoji est le caractère, ou nom:id pour un emoji personnalisé
member.joinUn membre rejoint le serveur
member.leaveUn membre part ou est retiré
command.invokeUn membre utilise une commande slash du serveur. Payload : name, options, user, channel_id, token

Les événements couvrent tout le serveur. Pour ne réagir que dans un salon, filtrez sur channel_id dans le déclencheur :

import { event } from "rawtoh"

export default event.payload.channel_id === "123456789012345678"
  && event.payload.content.startsWith("!clip")

Ce que vous pouvez faire

Messages

Membres et rôles

Commandes slash

Les commandes slash, pas à pas

Les commandes se déclarent une fois par serveur, sur le site du module sous Commands, ou depuis une action :

import { module } from "rawtoh"

await module("discord").request("command.create", {
  name: "stats",
  description: "Les stats du stream du jour",
  options: [{ type: 3, name: "periode", description: "jour ou semaine", required: false }],
})

Quand un membre tape /stats, Discord affiche « Rawtoh réfléchit… » et le module émet command.invoke. Un déclencheur choisit la commande par son nom :

import { event } from "rawtoh"

export default event.payload.name === "stats"

et l’action répond avec command.reply, qui remplace le « réfléchit… ». Vous avez 15 minutes ; au-delà, Discord affiche « n’a pas répondu ». message.send publierait un message à part et laisserait le « réfléchit… » en plan.

import { event, module, storage } from "rawtoh"

const subs = (await storage.get("subs-du-jour")) ?? 0
await module("discord").request("command.reply", {
  token: event.payload.token,
  content: `${subs} nouveaux abonnés aujourd'hui, demandé par ${event.payload.user.username}`,
})

Exemple : accueillir les nouveaux membres

Un déclencheur sur member.join et cette action :

import { event, module } from "rawtoh"

await module("discord").request("message.send", {
  channel_id: "123456789012345678",
  content: `Bienvenue <@${event.payload.user.id}> ! Choisis un rôle dans #roles.`,
})
await module("discord").request("member.add_role", {
  user_id: event.payload.user.id,
  role_id: "987654321098765432",
})

Exemples d’automatisations