2017-09-08 9 views
0

Ich habe nicht viel Wissen über Python und bin immer noch dabei, es zu lernen.Discord.py - Wie man Benutzer auf Befehl kickt

Ich habe einen Open-Source Discord Bot in Python 2.7 codiert.

Ich möchte eine Funktion hinzufügen, die es mir ermöglicht, einen Benutzer basierend auf einem Befehl zu treten.

So etwas wie [commandprefix] kickuser [Benutzer-ID] Aber ich habe keine Ahnung, wie der Bot greift den Benutzer-ID aus der Nachricht machen mir geschickt, und wenn ich versuche, es ultra-spezifisch zu machen mein zweites Konto zu treten als ein Test, es funktioniert auch nicht.

if message_content == ',purgeIdiots': 
     await kick('userid') 
     return 

Das ist der ultra-spezifische Code, wo ich manuell eine Benutzer-ID in das Dokument eingeben. Aber ich kann es nicht zur Arbeit bringen.

Ich bin extrem neu und würde mich über Hilfe freuen.

Antwort

0

Wenn Sie sich mit der Erstellung von Befehlen befassen, empfehle ich Ihnen, weiter über die discord.ext.commands-Unterbibliothek von discord.py zu lesen.

Hier ist eine FAQ über sie, und ein Beispiel für einen Bot mit ihm folgenden:

FAQ

Bot Example

Diese Erweiterung ermöglicht es Ihnen, Befehle mit Präfixen zu erstellen.

In Bezug auf Ihre Frage zu über Benutzer-ID zu treten, mit dem Befehl Erweiterung, die Sie so etwas wie tun könnte:

@bot.command(pass_context = True) 
async def kick(ctx, userName: discord.User): 
    await bot.kick(userName) 

glaube ich, dass sollte funktionieren, aber ich kann es noch nicht kompilieren nur zu überprüfen. Erfahren Sie jedoch mehr über die Befehlserweiterung, da sie Ihnen viel mehr bietet als das Überprüfen von Nachrichten auf Inhalte.

Sie müssen zunächst diskord.ext importieren, Sie können dies mit from discord.ext import commands an der Spitze des Programms tun.

Sie müssen dann Bot definieren, um sicherzustellen, dass Sie Zeug wie @bot.command verwenden können, weil Sie das brauchen. Dies geschieht folgendermaßen: bot = commands.Bot(command_prefix=',', description=description), wobei das Komma jetzt als Befehlspräfix definiert ist.

Das sollte das Code-Snippet ermöglichen, das ich ursprünglich hinzugefügt habe, um mit einem Benutzer zu funktionieren, der ,kick <username> eingeben kann.

+1

Danke Mann! Ich schätze es sehr. Ja, ich werde auf jeden Fall die Links sehen, die du mir geschickt hast. – sairento

+0

Stellt sich heraus, ich bin nicht ganz sicher, wie man das benutzt. Ich habe die Zeile '@ bot.command (pass_context = True)' entfernt, da ich Fehler erhalten habe, die besagten, dass 'bot' nicht definiert wurde. Ich habe es durch @owner_only ersetzt und es scheint nichts zu tun, wenn ich 'kick' tippe. Also habe ich "cmd_" vor dem Kick hinzugefügt, aber wenn ich ", kick (player)" eintippe (das Komma ist mein Befehlspräfix) funktioniert es immer noch nicht. Wenn Sie mir ein Beispiel geben könnten, wie ich es benutzen könnte, würde ich es sehr schätzen. Vielen Dank! – sairento

+0

Sicher! Ich werde meine Antwort bearbeiten, um Ihre Fragen zu reflektieren, da ich hier nicht genug Platz habe. – ocelot

Verwandte Themen