Hur man skapar en Python Discord-bot
Att ha en egen Discord-server kan vara mycket arbete, vilket är anledningen till att bots som sköter administrativa funktioner är så populära. Du kan enkelt designa din egen bot med hjälp av Python-biblioteket discord.py och grundläggande Python-kunskaper.
Steg för steg till din egen Python Discord-bot
Innan du börjar programmera din bot bör du skapa en Discord-bot. Du kan skapa din egen applikation med Discord och när du har gjort det står ingenting i vägen för din Discord-bot. Koden du behöver för din Discord-bot beror på vilka uppgifter du vill automatisera. Botten som presenteras i denna handledning är avsedd att lägga till roller inom en Discord-server.
Steg 1: installera discord.py
För att skapa din bot är Python-biblioteket discord.py ett viktigt verktyg. Innan du börjar måste du installera det på ditt system med pip, som är brukligt med Python. I Windows är följande terminalkommando lämpligt för installation:
py -3 -m pip install -U discord.pypythonSteg 2: skapa Python-dokument
Skapa ett nytt Python-dokument för att koda din bot. Du kan använda olika kodredigerare för din Python-fil eller en integrerad utvecklingsmiljö (IDE) som Pycharm.
Steg 3: anslut till Discord
Importera först Discord-biblioteket till ditt Python-dokument. Ange den bottoken du fick när du registrerade din Discord-bot på Discords utvecklarwebbplats. För att göra detta ersätter du platshållaren med din anpassade bottoken:
import discord
TOKEN = token_placeholderpythonDu behöver biblioteket för att interagera med Discord API. För att ansluta till Discord behöver du en instans av det så kallade klientobjektet. Använd följande kod för att skapa detta:
client = discord.Client()pythonSteg 4: Kontrollera att anslutningen har upprättats korrekt.
För att säkerställa att din bot är korrekt ansluten till Discord-servern, inkludera en asynkron metod i din Python-fil. Detta uppnås genom att svara på händelsen on_ready, som definieras i discord.py API. För att göra det möjligt för din funktion att fungera som en händelsehanterare, använd dekoratorn @client.event i Python.
@client.event
async def on_ready():
print(f'{client.user} is connected to the following server:\n')
for server in client.guilds:
print(f'{server.name}(id: {server.id})')pythonAsynkrona funktioner används ofta i programmeringen av Discord-bots. Detta säkerställer att funktionen körs på en dedikerad tråd separat från huvudtråden, vilket möjliggör parallell körning av bot-uppgifter utan att blockera huvudtråden.
Steg 5: Lägg till funktioner till din bot
För att implementera bot-funktionalitet i discord.py används händelsenon_message. Denna händelse utlöses varje gång din Discord-bot tar emot ett meddelande. För att hantera denna händelse bör din metod först identifiera avsändaren av meddelandet och sedan utföra önskad funktionalitet, till exempel lägga till roller.
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('!add_role'):
# Find role name
role_name = message.content.split(' ')[1]
# search corresponding Discord role
role = discord.utils.get(message.guild.roles, name=role_name)
# Check if the role exists
if role is None:
await message.channel.send(f'Role "{role_name}" does not exist)
return
# Role assignment
await message.author.add_roles(role)
await message.channel.send(f'Role "{role_name}" was added to {message.author}')Inledningsvis kontrollerar funktionen om det mottagna meddelandet har skickats av Discord-boten själv. Om så är fallet avslutas funktionen med hjälp av return.
Nästa steg innebär en närmare granskning av meddelandets innehåll. Om meddelandet börjar med strängen !add_role, känner boten igen det som ett kommando. Detta indikerar att serveranvändare måste initiera förfrågningar till Discord-boten med strängen !add_role. Även om vilken sträng som helst kan användas som kommando, är det att föredra att använda strängar som inte är vanliga i naturligt språk.
Boten bestämmer önskat rollnamn från ett korrekt tolkat kommando med hjälp av Python-funktionen split(). Därefter lokaliserar den relevant roll på din server. Du kan göra detta genom att utnyttja objektet message, som innehåller en mängd information om din server i fältet message.guild.
Om rollen inte finns och därför har värdet “None” genereras ett felmeddelande och funktionen avslutas med hjälp av return satsen. Om rollen finns tilldelas den efter behov. För detta använder vi add_roles från discord.py-biblioteket, som också definieras inom message et.

