Я пытался сделать / команду у себя в боте используя коги
Ошибка:
An exception has occurred while executing command `info`:
Traceback (most recent call last):
File "C:\Users\fun\VirtualEnvDs\lib\site-packages\discord_slash\client.py", line 1353, in invoke_command
await func.invoke(ctx, **args)
File "C:\Users\fun\VirtualEnvDs\lib\site-packages\discord_slash\model.py", line 210, in invoke
return await self.func(*args, **kwargs)
TypeError: polina_moderator.info() missing 1 required positional argument: 'ctx'
Я к сожалению без понятия как это исправить Код самой команды:
@slash.slash(name="info",
description="Команда для поиска информации о пользователе",
options=[
create_option(
name="member",
description="Напишите пользователя",
option_type=6,
# check out the docs (link is provided in readme.md file) to know more about different types of options
required=True
)
])
async def info(self, ctx, member: discord.Member = None):
await ctx.message.delete()
if member == None:
emb = discord.Embed(title="Информация о пользователе", color=ctx.message.author.color)
emb.add_field(name="Имя:", value=ctx.message.author.display_name, inline=False)
emb.add_field(name="Айди пользователя:", value=ctx.message.author.id, inline=False)
t = ctx.message.author.status
if t == discord.Status.online:
d = " В сети"
t = ctx.message.author.status
if t == discord.Status.offline:
d = "⚪ Не в сети"
t = ctx.message.author.status
if t == discord.Status.idle:
d = " Не активен"
t = ctx.message.author.status
if t == discord.Status.dnd:
d = " Не беспокоить"
emb.add_field(name="Активность:", value=d, inline=False)
emb.add_field(name="Статус:", value=ctx.message.author.activity, inline=False)
emb.add_field(name="Роль на сервере:", value=f"{ctx.message.author.top_role.mention}", inline=False)
emb.add_field(name="Акаунт был создан:",
value=ctx.message.author.created_at.strftime("%a, %#d %B %Y, %I:%M %p UTC"), inline=False)
emb.set_thumbnail(url=ctx.message.author.avatar_url)
await ctx.send(embed=emb)
else:
emb = discord.Embed(title="Информация о пользователе", color=member.color)
emb.add_field(name="Имя:", value=member.display_name, inline=False)
emb.add_field(name="Айди пользователя:", value=member.id, inline=False)
t = member.status
if t == discord.Status.online:
d = " В сети"
t = member.status
if t == discord.Status.offline:
d = "⚪ Не в сети"
t = member.status
if t == discord.Status.idle:
d = " Не активен"
t = member.status
if t == discord.Status.dnd:
d = " Не беспокоить"
emb.add_field(name="Активность:", value=d, inline=False)
emb.add_field(name="Статус:", value=member.activity, inline=False)
emb.add_field(name="Роль на сервере:", value=f"{member.top_role.mention}", inline=False)
emb.add_field(name="Акаунт был создан:", value=member.created_at.strftime("%a, %#d %B %Y, %I:%M %p UTC"),
inline=False)
await ctx.send(embed=emb)
Я использовал вот эти библиотеки:
- import discord
- from discord.ext import commands
- from discord_slash.utils.manage_commands import create_option, create_choice
- from bot_polina import slash
slash = SlashCommand(bot, sync_commands=True, sync_on_cog_reload=True)
Ответы (1 шт):
Автор решения: Corrygan
→ Ссылка
Я не понял, что за 11 строк в начале кода, заменил их на @bot.command и у меня всё работало... Кстати немного оптимизировал проверки в коде
@commands.command()
async def info(self, ctx, member: discord.Member = None):
await ctx.message.delete()
if member == None:
emb = discord.Embed(title="Информация о пользователе", color=ctx.message.author.color)
emb.add_field(name="Имя:", value=ctx.message.author.display_name, inline=False)
emb.add_field(name="Айди пользователя:", value=ctx.message.author.id, inline=False)
t = ctx.message.author.status
if t == discord.Status.online:
d = " В сети"
elif t == discord.Status.offline:
d = "⚪ Не в сети"
elif t == discord.Status.idle:
d = " Не активен"
elif t == discord.Status.dnd:
d = " Не беспокоить"
emb.add_field(name="Активность:", value=d, inline=False)
emb.add_field(name="Статус:", value=ctx.message.author.activity, inline=False)
emb.add_field(name="Роль на сервере:", value=f"{ctx.message.author.top_role.mention}", inline=False)
emb.add_field(name="Акаунт был создан:", value=ctx.message.author.created_at.strftime("%a, %#d %B %Y, %I:%M %p UTC"), inline=False)
emb.set_thumbnail(url=ctx.message.author.avatar_url)
await ctx.send(embed=emb)
else:
emb = discord.Embed(title="Информация о пользователе", color=member.color)
emb.add_field(name="Имя:", value=member.display_name, inline=False)
emb.add_field(name="Айди пользователя:", value=member.id, inline=False)
t = member.status
if t == discord.Status.online:
d = " В сети"
elif t == discord.Status.offline:
d = "⚪ Не в сети"
elif t == discord.Status.idle:
d = " Не активен"
elif t == discord.Status.dnd:
d = " Не беспокоить"
emb.add_field(name="Активность:", value=d, inline=False)
emb.add_field(name="Статус:", value=member.activity, inline=False)
emb.add_field(name="Роль на сервере:", value=f"{member.top_role.mention}", inline=False)
emb.add_field(name="Акаунт был создан:", value=member.created_at.strftime("%a, %#d %B %Y, %I:%M %p UTC"), inline=False)
emb.set_thumbnail(url=ctx.message.author.avatar_url)
await ctx.send(embed=emb)