Discord Python Bot in Channel

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PythonProgrammer2.0
User
Beiträge: 13
Registriert: Montag 8. Juli 2019, 15:58

Hallo,

wie kann ich mit dem Modul discord einen Bot in einem bestimmten Channel zu bekommen? Bisher kann der Bot nur in allen Channels lesen. Ich habe Commands, die in allen Channels lesbar sind, und bestimmtee Commands, die nur in einem speiellem Channel abhörbar sein sollen. Wie macht man das? Danke für Antworten ;)
Benutzeravatar
BigSanch
User
Beiträge: 16
Registriert: Dienstag 6. Oktober 2020, 06:52

Grundsätzlich gibt es da mehrere Möglichkeiten, wenn ich dich richtig verstanden habe

Möglichkeit 1:
Du vergibst Rollen, die nur in den speziellen Channels agieren dürfen, sonst niemand, also @everyone nullen.
Du machst nach dem Start des Commands eine "has role" Abfrage der von Dir gemachten Rolle, somit ist niemand außer der Rolle in der Lage den Befehl zu nutzen, egal in welchem Channel

Möglichkeit 2:
Du machst nach dem Starten des Commands eine "wenn channel ist 'spezial channel'" Anweisung, damit der Code danach nur ausgeführt wird, wenn der Schreiber auch in dem speziellen Channel ist.

Möglichkeit 3:
Sollten vom Bot Ausgaben gemacht werden, kann man auch den Bot, bzw die Rolle des Bots so anpassen, dass er in einigen Channel keine schreib Berechtigung hat, falls das von Nöten ist.

Ich mache grundsätzlich alles über rollen und Berechtigungen, ist für mich übersichtlicher und bequemer
Danke für Eure Zeit und Antworten
mfG Big Sanch
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

@BigSanch: Das geht am Thema des Threaderstellers vorbei. Sein Bot liest alle Nachrichten auf einem Discord-Server. Commands kann er erkennen. Nun soll er aber auf bestimmte Commands reagieren, wenn sie in bestimmte Channeln abgesetzt werden.
Er muss also anhand der Nachricht erkennen, in welchem Channel sie abgesetzt wurde.
Benutzeravatar
BigSanch
User
Beiträge: 16
Registriert: Dienstag 6. Oktober 2020, 06:52

und bestimmtee Commands, die nur in einem speiellem Channel abhörbar sein sollen. Wie macht man das?
Finde ich nicht, das beantworte ich denk ich sehr gut damit. Dem Bot ist es egal wo er was liest. Man kann dem Bot sagen er muss reagieren, wenn jemand xxx eingibt, ob nun als Nachricht oder Befehl. Man kann den Bot auf Channel begrenzen beim Command abhören, was ich schlecht finde. Ich finde man sollte Befehle user, channel, role bezogen machen, das ist einfacher. Beispiel:
  • Channel a
    - alle user erlaubt
    - standart rollen erlaubt
    - alles vom bot erlaubt
  • Channel b
    - alle user erlaubt
    - standart rollen erlaubt
    - extra rolle "cmd" erlaubt
    - alles vom bot erlaubt
  • Channel c
    - nur user der rolle admin erlaubt
    - keine standart rollen erlaubt
    - alles vom bot erlaubt
  • Channel d
    - nur user der rolle admin erlaubt
    - keine standart rollen erlaubt
    - extra rolle "cmd" erlaubt
    - alles vom bot erlaubt
Wenn ich nun beim bot schreibe, dass der Befehl "!test" nur von der rolle "cmd" ausgeführt werden darf, kann dieser Befehl nur in Channel b und d ausgeführt werden
Aber gerne nochmal ausführlicher:
wie kann ich mit dem Modul discord einen Bot in einem bestimmten Channel zu bekommen?
  • Mit der Rollenvergabe
    - Geb dem Bot eine Rolle
    - sag dass im Channel x die rolle nicht erlaubt ist, also schreib und lese verbot
  • Bei der Bot Befehl Programmierung
    - gib dem Bot den Befehl "!test" und eine Aufgabe dazu
    - sag dem Befehl, dass er nur in Channel x funktionieren darf
  • Bei der Bot Rollen Programmierung
    - gib dem Bot den Befehl "!test" und eine Aufgabe dazu
    - sag dem Befehl, dass er nur Role x funktionieren darf
    - sag dem Channel x dass dort nur Rolle x shreiben darf
Bisher kann der Bot nur in allen Channels lesen.
Wenn gewollt ok, wenn nicht:
  • Mit der Rollenvergabe
    - Geb dem Bot eine Rolle
    - sag dass im Channel x die rolle nicht erlaubt ist, also schreib und lese verbot
  • Bei der Bot Befehl Programmierung
    - gib dem Bot den Befehl "!test" und eine Aufgabe dazu
    - sag dem Befehl, dass er nur in Channel x funktionieren darf
und bestimmtee Commands, die nur in einem speiellem Channel abhörbar sein sollen. Wie macht man das?
  • Mit der Rollenvergabe
    - Geb dem Bot eine Rolle
    - sag dass im Channel x die rolle nicht erlaubt ist, also schreib und lese verbot
  • Bei der Bot Befehl Programmierung
    - gib dem Bot den Befehl "!test" und eine Aufgabe dazu
    - sag dem Befehl, dass er nur in Channel x funktionieren darf
  • Bei der Bot Rollen Programmierung
    - gib dem Bot den Befehl "!test" und eine Aufgabe dazu
    - sag dem Befehl, dass er nur Role x funktionieren darf
    - sag dem Channel x dass dort nur Rolle x shreiben darf
Wenn ich damit falsch liegen sollte, hab ich das Bot Programmieren falsch verstanden :-).
Dann wäre nett wenn man mir sagte was daran falsch sein soll. Ich will ja auch was lernen ;-)
Danke für Eure Zeit und Antworten
mfG Big Sanch
Benutzeravatar
BigSanch
User
Beiträge: 16
Registriert: Dienstag 6. Oktober 2020, 06:52

Wenn du es etwas komplizierter, aber sicherer machen willst, kannst auch folgendes beim Schreiben des Bot Befehls integrieren:
  • schreibe im Bot Befehl, dass der nur im Channel X funktionieren darf
  • schreibe im Bot Befehl, dass der nur mit Rolle x funktionieren darf
Kombiniert, dass der Befehl nur durch Rolle x im Channel x ausgeführt werden darf
Danke für Eure Zeit und Antworten
mfG Big Sanch
Antworten