Deprecated: Use of "parent" in callables is deprecated in /var/www/html/forum/src/vendor/league/flysystem-eventable-filesystem/src/EventableFilesystem.php on line 431
  • If you need help or want to discuss things, you now can also join us on our Discord Server!
  • A first preview of the unlimited version of SinusBot can be found in the Upcoming Changes thread. A version for Windows will follow, but we don't have a release date, yet.

DE [SOLVED] Reaktionen bei Embed Nachrichten nicht möglich? (Discord)

MauriceR

Well-Known Member
Contributor
Hallo,

Ich bin derzeit dabei ein paar Funktionen für den Sinusbot auf einen Discord Server zu programmieren.
Aktuell "verzweifle" ich daran Reaktionen zu einer Embed Nachricht hinzuzufügen.

Zum senden der Embed nachricht verwende ich folgenen Code:
JavaScript:
backend.extended().createMessage(`${store.get("guildid")}/692731883116691536`, getEmbedMusic());

Die Funktion "getEmbedMusic()" gibt folgendes wieder:
JavaScript:
    function getEmbedMusic() {
        return {
            content: "Musik-Steuerung",
            embed: {
                description: "Mithilfe der Reaktionen kannst du die Musik des Bots steuern!",
                color: 65313,
                fields: [
                    {
                        name: "🔁",
                        value: "Musikwiederholung an/aus schalten",
                        inline: true
                    },
                    {
                        name: "⏮️",
                        value: "Letztes Lied abspielen",
                        inline: true
                    },
                    {
                        name: "⏯️",
                        value: "Musik starten/pausieren",
                        inline: true
                    },
                    {
                        name: "⏭️",
                        value: "Nächstes Lied abspielen",
                        inline: true
                    },
                    {
                        name: "🔇/🔉",
                        value: "Ton Stummschalten/Stummschaltung aufheben",
                        inline: true
                    },
                    {
                        name: ":one: - :keycap_ten:",
                        value: "Lautstärke ändern (1=10%, 2=20%...)",
                        inline: true
                    }
                ]
            }
        }
    }

Den Erhalt der Embed Nachricht durch den Bot kann ich mithilfe von der
JavaScript:
event.on('message', function (msg) {
bestätigen.

Wenn ich nun die Reaktionen mit der folgenden Funktion hinzufügen will, passiert nichts. Selbst mit einen Timeout zwischen den hinzufügen der Reaktionen.
JavaScript:
    async function createReaction(channelID, messageID, emoji) {
        return new Promise(await discord('PUT', `/channels/${channelID}/messages/${messageID}/reactions/${emoji}/@me`, null, false));
    }

Diesen Code verwende ich so:
JavaScript:
        wait(200)
            .then(() => createReaction(guildID, msgid, e_repeat))
            .then(() => wait(500))
            .then(() => createReaction(guildID, msgid, e_prev))....
In diesen Fall entspricht guildID die ID des Servers, sowie die channelID zusammen. Die msgid ist einfach nur die ID der Nachricht.
e_repeat und e_prev sind festgelegte Variablen für die Emotes in Discord :
JavaScript:
    var e_repeat = ':repeat:';
    var e_prev = ':track_previous:';

Kann es eventuell daran liegen, dass ich zu viele Reaktionen zu der Nachricht hinzufügen will?
Ich versuche dort 16 Reaktionen hinzuzufügen. Wenn ich jedoch bei einer Nachricht 2 Reaktionen hinzufügen will, funktioniert dies mithilfe der oberen Funktionen ohne Probleme

Das erfassen der Reaktionen und die darauffolgende Reaktion (Musik starten/stoppen etc.) funktioniert ohne Probleme, nur halt nicht das hinzufügen der 16 Reaktionen.


EDIT (27.01.2021):

Das Problem habe ich mittlerweile gelöst.
Ich sende die Reaktionen nun mit der "createReaction" Funktion der SinusBot Scripting Engine. Die hat anfangs bei mir nicht funktioniert (warum auch immer), weshalb ich die Methode über Discord API Calls verwendet habe.

JavaScript:
wait(200)
            .then(() => msg.createReaction(e_repeat))
            .then(() => wait(350))
            .then(() => msg.createReaction(e_prev))
Mit dieser Funktion klappt es jetzt komplett ohne Probleme.
 
Last edited:
Top