Wenn es eine Plattform gibt, die sich zum Liebling der Online-Communities entwickelt hat, dann ist es Discord. Die intuitive Benutzeroberfläche, die lebendigen Communities und die vielfältigen Funktionen haben in den letzten 6 Jahren zu einem rasanten Wachstum geführt.
Zumindest unter Entwicklern ist Discord vor allem wegen seiner hohen Programmierbarkeit beliebt. In diesem Tutorial werden wir einen einfachen Discord-Bot mit Python erstellen, den Sie zu Ihren Servern hinzufügen können.
Einrichten Ihres Bots im Entwicklerportal
Um loszulegen, gehen Sie zunächst zu
Und eine neue Anwendung erstellen
Gehen Sie von dort aus zur Registerkarte "Bot" und erstellen Sie einen neuen Bot.
Um unseren Bot zu einem Server hinzuzufügen, gehen Sie auf die Registerkarte oAuth2, scrollen Sie nach unten zu den Bereichen, aktivieren Sie Bot und besuchen Sie die generierte URL.
Wählen Sie dann den Server aus, zu dem Sie den Bot hinzufügen möchten, und Sie sollten ihn auf Ihrem Server unter Offline-Benutzer sehen
Das ist alles, was wir auf der Discord-Seite tun müssen!
Projekt einrichten
Nun wollen wir unseren Bot programmieren.
Installieren Sie zunächst discord.py mit:
pip install discord
Und erstellen Sie eine neue Datei namens main.py
Wir können dann unsere Absprache wie folgt authentifizieren:
from discord.ext import commands
TOKEN = "FIND YOUR TOKEN IN THE BOT TAB IN DISCORD DEVELOPER PORTAL"
# Initialize Bot and Denote The Command Prefix
bot = commands.Bot(command_prefix="!")
# Runs when Bot Succesfully Connects
@bot.event
async def on_ready():
print(f'{bot.user} succesfully logged in!')
bot.run(TOKEN)
Sie finden Ihr Authentifizierungstoken auf der Registerkarte Bot in Ihrem Entwicklerportal
Beantwortung von Nachrichten
Lesen und beantworten wir nun die Nachrichten, die andere in den Kanälen senden
from discord.ext import commands
TOKEN = "INSERT-TOKEN"
bot = commands.Bot(command_prefix="!")
@bot.event
async def on_ready():
print(f'{bot.user} succesfully logged in!')
@bot.event
async def on_message(message):
# Make sure the Bot doesn't respond to it's own messages
if message.author == bot.user:
return
if message.content == 'hello':
await message.channel.send(f'Hi {message.author}')
if message.content == 'bye':
await message.channel.send(f'Goodbye {message.author}')
await bot.process_commands(message)
bot.run(TOKEN)
Wir müssen die bot.process_commands am Ende einfügen, um sicherzustellen, dass der Bot auch überprüft, ob die Nachricht ein gültiger Befehl ist.
Und hier können Sie sehen, wie es funktioniert:
Befehle erstellen
Fügen wir nun Befehle hinzu. Befehle sind nur Antworten, die speziell aufgerufen werden. Wir haben zu Beginn festgelegt, dass jeder Befehl mit '!' beginnen muss, was als "Alexa" fungiert, um auf einen Befehl zu warten.
Wir werden zwei Befehle hinzufügen, einen, der das Quadrat einer Zahl liefert, und einen, der uns die Scrabble-Punkte für ein bestimmtes Wort angibt.
from discord.ext import commands
TOKEN = "INSERT TOKEN"
bot = commands.Bot(command_prefix="!")
@bot.event
async def on_ready():
print(f'{bot.user} succesfully logged in!')
@bot.event
async def on_message(message):
if message.author == bot.user:
return
if message.content == 'hello':
await message.channel.send(f'Hi {message.author}')
if message.content == 'bye':
await message.channel.send(f'Goodbye {message.author}')
await bot.process_commands(message)
# Start each command with the @bot.command decorater
@bot.command()
async def square(ctx, arg): # The name of the function is the name of the command
print(arg) # this is the text that follows the command
await ctx.send(int(arg) ** 2) # ctx.send sends text in chat
@bot.command()
async def scrabblepoints(ctx, arg):
# Key for point values of each letter
score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2,
"f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3,
"l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1,
"r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4,
"x": 8, "z": 10}
points = 0
# Sum the points for each letter
for c in arg:
points += score[c]
await ctx.send(points)
bot.run(TOKEN)
Und hier können wir sehen, wie es funktioniert!
Deployment des Bots
Natürlich möchten Sie Ihr Skript nicht rund um die Uhr von Ihrem lokalen Rechner aus ausführen. Deshalb ist es wichtig, dass Sie Ihr Skript in der Cloud deployen.
In Codesphere dauert das nur Minuten - siehe Speedrun: Deployment einer Anwendung