Бот Discord.py - команда ping не работает - PullRequest
0 голосов
/ 01 марта 2019

Я просто слоняюсь с диссонанс-ботами и тоже давно не пользуюсь python.Я делаю валютного бота, валюта ep, которая отслеживает богатство пользователя и сохраняет все в файле json.Я работал до этого, но хотел использовать другой способ написания.

Мой первоначальный путь -

@client.event
async def on_message(message):
    if message.content.upper().startswith('EP.PING'):
        await client.send_message(message.channel, "Ping.")

Мой (надеюсь, лучший способ) -

@client.command()
async def ping():
    await client.say('Pong')

Сообщения об ошибках -

File "f:/Python Programs/EP Bot/EP Bot V2.py", line 19, in <module>
    @client.command()
  File "F:\Python 3.6.4\lib\site-packages\discord\client.py", line 296, in __getattr__
    raise AttributeError(msg.format(self.__class__, name))
AttributeError: '<class 'discord.client.Client'>' object has no attribute 'command'
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x000001E73CDBBDA0>
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x000001E73CDCE0B8>

Помощь с этим была бы очень признательна, и если вы думаете, что мой первоначальный метод лучше, то это тоже хорошо, я просто думаю, что это намного проще, если он работает.

Если вам известен какой-либо ссылочный код или шаблоны, это было бы здорово!

1 Ответ

0 голосов
/ 01 марта 2019

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

from discord.ext.commands import Bot

client = Bot('!')

# Rest of your code is unchanged

Имейте в виду, что если вы хотите иметь on_messageи command s, вам нужно изменить on_message для их поддержки.См. Почему команды остановки on_message работают?

...