• 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 Nachrichten in bestimmten Chat zurücksenden

HI ich habe eine Frage und zwar ich habe einige Scripts gemacht (Bin gerade dabei Javascript zu lernen und bin schon gut dabei). Sobald man den bot ein befehl schreibt macht er was und antwortet usw. Eigentliche Frage: Ich will es so machen dass wenn man den bot privat schreibt, dass er dann Privat antwortet. Schreibt man den bot in channel an, antwortet er in channel. Wie macht man das?
 

Multivitamin

Well-Known Member
Tier III
is awesome!
V.I.P.
is uber awesome!
Contributor
Insider
ev.chat existiert nur beim message event und nicht beim chat event

ansonsten gibt es noch die command lib die standardmäßig mit sinusbot mit kommt und das parsen der commands für euch übernimmt
damit wird ebenfalls ein erstellter command unter !help angezeigt

ein minimales example wäre:

JavaScript:
Command.createCommand("ping")
  .help("replies with Pong!")
  //the arguments which this function receives are following:
  //1) the client which has executed the command
  //2) the arguments which had been parsed
  //3) reply, depending on where the client has sent the message it will automatically reply to the client, channel or server chat
  //4) the raw text of the message
  .exec((client, args, reply, raw) => {
    reply("Pong!") //sendet automatisch die nachricht zurück von wo diese her gekommen ist channel / server oder privat
  })

anleitungen wie man das genau benutzt findet man hier:
https://multivit4min.github.io/Sinusbot-Command
 

LeonJoas

Active Member
Ich kann das Beispiel gerne erweitern, aber das hat nichts mit der neuen Command-Bibeothek zu tun. Das ist so zu sagen der alte Weg:

JavaScript:
    const event = require('event');
    const engine = require('engine');
    const backend = require('backend');

    event.on('chat', function (ev) {
        if (ev.mode == 1) { // Wenn das Event durch den Private-Chat ausgelöst wurde:
            ev.client.chat("Dies ist eine private Nachricht."); // Sende Private Nachricht
        }
        if (ev.mode == 2) { // Wenn das Event durch den Channel-Chat ausgelöst wurde:
            if (ev.client.id() != backend.getBotClientID()) { // Wenn der Bot die Nachricht nicht selber geschrieben hat..
                backend.getCurrentChannel().chat("Dies ist eine Channel-Nachricht."); // ..wird eine Nachricht in den Channel geschrieben.
            }
        }
        if (ev.mode == 3) { // Wenn das Event durch den Server-Chat ausgelöst wurde:
            if (ev.client.id() != backend.getBotClientID()) { // Wenn der Bot die Nachricht nicht selber geschrieben hat..
                backend.chat("Dies ist eine Server-Nachricht."); // ..wird eine Nachricht in den Server-Chat geschrieben.
            }
        }
    })

LG
 

Multivitamin

Well-Known Member
Tier III
is awesome!
V.I.P.
is uber awesome!
Contributor
Insider
bei der command.js lib funktioniert das folgendermaßen:
https://github.com/Multivit4min/Sin...cc6d4c5902a0102f346032/command.js#L1388-L1395

praktisch als funktion:

JavaScript:
function getReplyOutput({ mode, client, channel }) {
  switch (mode) {
    case 1: return client.chat.bind(client)
    case 2: return channel.chat.bind(channel)
    case 3: return backend.chat.bind(backend)
    default: return msg => debug(DEBUG.WARNING)(`WARN no reply channel set for mode ${mode}, message "${msg}" not sent!`)
  }
}


und angewendet kann sie folgendermaßen:
JavaScript:
event.on('chat', function (ev) {
    if (ev.client.isSelf()) return
    getReplyOutput(ev)("Hallo!")
})
 
Top