Je suis en train de créer un bot discord avec lequel je veux pouvoir interagir à la fois avec les commandes et les emojis. Voici le code jusqu'à présent:

import os
import discord
from dotenv import load_dotenv
from discord.ext import commands

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
GUILD = os.getenv('DISCORD_GUILD')

bot = commands.Bot(command_prefix='$')

client = discord.Client()

@bot.command(name='repeat', help='help me to understand bots')
async def test(ctx, *args):
    for arg in args:
        await ctx.send(arg)


@client.event
async def on_raw_reaction_add(payload):
    print("someone reacted to something")
    print(payload)


bot.run(TOKEN)
client.run(TOKEN)

Mon intuition est que les deux dernières lignes sont celles où cela ne va pas, bien que je ne comprenne pas la fonction run (TOKEN) pour bien comprendre pourquoi cela se produit ou comment le réparer.

1
Abijah 5 nov. 2020 à 02:28

1 réponse

Meilleure réponse

Pour développer davantage cela, vous devez bien comprendre ce que vous avez fait et avoir un plan pour ce que vous voulez faire. Je vais d'abord vous diriger vers la documentation python de discord où vous pouvez voir tout ce que discord.py a à offrir. Cela devrait probablement être votre premier arrêt lorsque vous avez des questions.

Je vois que vous avez import discord et from discord.ext import commands... discord.py a deux façons d'approcher un bot, que vous avez :

client = discord.Client() est originaire de import discord, et bot = commands.Bot() est originaire de import discord.ext.

Vous devez choisir d'utiliser discord.Client() ou discord.Bot() car les cas d'utilisation sont totalement différents. Je suggère ce dernier, car il permettra à votre bot d'en faire plus, de manière plus propre.

Votre prochaine étape consisterait à remplacer tous les décorateurs @ par la variable que vous choisissez et à maintenir cette cohérence dans tout votre code. Ensuite, vous devez supprimer les .run(TOKEN) que vous n'utiliserez pas. Donc, si j'étais vous, je lirais la documentation que je vous ai liée afin que vous compreniez plus qu'un tutoriel YouTube n'enseignerait.

En ce qui concerne une révision de votre code, cela ressemblerait à ceci :

import os
import discord
from dotenv import load_dotenv
from discord.ext import commands

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
GUILD = os.getenv('DISCORD_GUILD')

bot = commands.Bot(command_prefix='$')

@bot.command(name='repeat', help='help me to understand bots')
async def test(ctx, *args):
    for arg in args:
        await ctx.send(arg)

@bot.event
async def on_raw_reaction_add(payload):
    print("someone reacted to something")
    print(payload)

bot.run(TOKEN)
1
Tristan Hanks 5 nov. 2020 à 01:01