Я пытаюсь создать простого бота для ответа на дискорд с discord.py однако я получаю эту ошибку, и я не уверен, почему

#python-3.x #discord.py

Вопрос:

Странно то, что у меня даже нет 343 строк кода, у меня всего около 30, так что я действительно не уверен, почему это происходит

Ошибка :

 Ignoring exception in on_message
Traceback (most recent call last):
  File "C:UsersaiosdjPycharmProjectsnerdeyesvenvlibsite-packagesdiscordclient.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "C:/Users/aiosdj/PycharmProjects/nerdeyes/main.py", line 28, in on_message
    await bot.send_message(message.channel, msg)
AttributeError: 'Bot' object has no attribute 'send_message'
 

Код :

 import asyncio
from discord.ext import commands

bot = commands.Bot(command_prefix='.nerd ', description = 'nerd eyes')

@bot.event
async def on_ready():

    guild_count = 0

    for guild in bot.guilds:

        print(f"- {guild.id} (name: {guild.name})")

        guild_count = guild_count   1

    print('Nerdeyes has awoken in '   str(guild_count)   " servers")


@bot.event
async def on_message(message):
    if message.author == bot.user:
        return

    if message.content.startswith('.nerd'):
        msg = 'eyes'.format(message)
        await bot.send_message(message.channel, msg)

bot.run("TOKEN")
 

Ответ №1:

Bot.send_message не существует, о чем также говорит ваша ошибка. Вам нужно что — то , что реализует Messageable , например Channel , User , или Member -и метод называется send , нет send_message . Быстрый просмотр документов API для Bot также показывает, что этот метод нигде не найден. Как правило, неплохо сначала проверить, существует ли метод, прежде чем использовать его.

 await message.channel.send(msg)
 

Кроме того, msg = 'eyes'.format(message) .format здесь вообще ничего не делается, это то же самое, что просто 'eyes' .

У меня даже нет 343 строк кода

Ошибка говорит, что это происходит в venvlibsite-packagesdiscordclient.py строка 343, а не ваш файл. Это строка в библиотеке Discord, которую вызывает ваш код, поэтому в тот или иной момент один из этих методов аварийно завершит работу. Строка ниже в ошибке говорит, из какой вашей строки она взята (28).

ps. Вы только что слили свой токен бота, сгенерируйте новый.