Discord.py бот не будет отвечать на команды - PullRequest
1 голос
/ 25 мая 2020

У меня проблема, когда мой бот не отвечает на команды. вот мой код:

import os
import discord
from discord.ext import commands
from discord.ext.commands import Bot
import random

client = discord.Client()

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

@client.event #server + member list
async def on_ready():
    guild = discord.utils.get(client.guilds, name=GUILD)
    print(
        f'{client.user} is connected to the following guild:\n'
        f'{guild.name}(id: {guild.id})\n'
    )

    members = '\n - '.join([member.name for member in guild.members])
    print(f'Guild Members:\n - {members}')

@bot.command() 
async def test(ctx, arg):
    await ctx.send(arg)

client.run(TOKEN)

У меня есть другие клиентские события для бота в коде, который сработал, например, реакция на сообщения и ответ на сообщения. Мой приведенный выше код не работает даже после того, как я закомментировал все остальные комментарии. во время работы программы я набрал! test arg в своем канале Discord, но получил запрограммированную реакцию от своего бота только тогда, когда она не была закомментирована.

1 Ответ

1 голос
/ 26 мая 2020

У вас может быть только один бот / клиент одновременно. Я бы использовал Bot, потому что класс Bot является подклассом класса Client, поэтому он может делать все, что может делать его родитель.

from discord.ext import commands
import discord.utils

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

@bot.event #server + member list
async def on_ready():
    guild = discord.utils.get(bot.guilds, name=GUILD)
    print(
        f'{client.user} is connected to the following guild:\n'
        f'{guild.name}(id: {guild.id})\n'
    )

    members = '\n - '.join([member.name for member in guild.members])
    print(f'Guild Members:\n - {members}')

@bot.command() 
async def test(ctx, arg):
    await ctx.send(arg)

bot.run(TOKEN)
...