Ошибка отправки сообщения на определенный канал discord.py

#python #discord #discord.py

#python #Discord #discord.py

Вопрос:

Я создаю бота на Discord.py и я пытаюсь установить канал, на который я хочу отправить сообщение, используя аргумент. Код такой:

 @client.command()
async def send(ctx, arg1):
    channel = client.get_channel(arg1)
    await channel.send('Message')
  

Когда я ввожу идентификатор канала вместо arg1, это работает, но когда я набираю команду в Discord (!отправить 282772187812), это не работает, и я получаю эту ошибку: discord.ext.commands.errors.CommandInvokeError: команда вызвала исключение: AttributeError: объект ‘NoneType’ не имеет атрибута ‘send’

Заранее спасибо.

Комментарии:

1. Пробовали ли вы использовать try : except: для отправки сообщения об ошибке и попытки возобновить выполнение

2. Нет, я этого не пробовал

3. discordpy.readthedocs.io/en/latest/api.html показывает, что идентификатор канала должен быть int, но я полагаю, что arg1 здесь является строкой. Не знаю, имеет ли это значение, но вы можете попробовать преобразовать arg1 в int.

Ответ №1:

Как сказал @backcab, вы можете либо преобразовать arg1 в целое число, либо использовать преобразователи каналов из внешних команд.

Решение 1

 @client.command()
async def send(ctx, arg1):
    channel = client.get_channel(int(arg1))
    await channel.send('Message')
  

Решение 2

 @client.command()
async def send(ctx, channel: discord.TextChannel):        
    await channel.send('Message')