#python #discord.py
Вопрос:
Я попытался внедрить сообщение в свой файл cogs. Когда я пытаюсь использовать команду, на моей консоли появляется эта ошибка.
An exception has occurred while executing command `cal`:
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord_slash/client.py", line 1352, in invoke_command
await func.invoke(ctx, **args)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord_slash/model.py", line 209, in invoke
return await self.func(self.cog, *args, **kwargs)
File "/home/runner/calculator/cogs/update.py", line 16, in cal
self.username = ctx.message.author.display_name
AttributeError: 'NoneType' object has no attribute 'author'
Ошибка указывает на то, что автор не возвращает ничего (насколько я понимаю). Вот мой фрагмент кода :
@ cog_ext.cog_slash(description = "Calculate your math's query.")
async def cal(self,ctx,query : str) :
self.operation = ("").join(query)
self.evaluate = eval(self.operation)
self.username = ctx.message.author.display_name
self.embed = discord.Embed(title = "/Cal", description = "Calculate your math queries.", colour = discord.Color.blurple())
self.embed.set_footer(text = f"{self.username}'s query evaluated.")
self.embed.set_author(name = f"{self.username}'s' query.", icon_url = ctx.message.author.avatar_url)
self.embed.add_field(value = f"{self.operation}", inline = False)
self.embed.add_field(value = "After evaluated, the result is :", inline = True)
self.embed.add_field(value = f"{self.evaluate}", inline = True)
await ctx.send(embed = self.embed)
Исходя из моего инстинкта, я думаю, что в файле cogs автор представлен с использованием разных ключевых слов. Может быть, с моим кодом что-то не так. Заранее спасибо.
Комментарии:
1. Какую библиотеку вы используете для команд косой черты?
2. команда discord_ слэш или команда discord-py-слэш
3. Ну , ошибка говорит , что
message
этоNone
так, а не.author
так, так что ваш инстинкт здесь не прав. Я ничего не знаю об этой библиотеке, поэтому не могу указать, откуда взялась реальная проблема.
Ответ №1:
Проблема здесь в том, что команды discord-py-slash (или discord-взаимодействия, как они были переименованы) возвращают SlashContext
объект вместо обычного объекта контекста, который использовался discord.py. И, поскольку команда косой черты не вызывается с сообщением, объект сообщения есть None
, что подтверждается ошибкой.
Чтобы решить эту проблему, вы должны иметь возможность заменить ctx.message.author
на ctx.author
, что должно работать, как указано в их документации.
Ответ №2:
Я не знаю , какую библиотеку вы используете или как она работает, так как это не похоже на просто discord.py
, но вы пробовали делать ctx.author.display_name
вместо ctx.message.author.display_name
этого .
Комментарии:
1. Да, я пытался, но это все равно не сработало. Но спасибо за вашу помощь.