#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')