Я пытался создать оболочку @validate_channel, эта оболочка должна выполнять команду, только если она выполняется на сервере, а не на частном канале, я пытаюсь:
Функция команды:
@validate_channel
@bot.command(brief="Adds one or more members to the whitelist")
async def add(ctx: commands.Context, *users: discord.Member):
if not check_permissions(ctx.author.id, ctx.guild):
await ctx.send(NOT_ALLOWED_MSG)
else:
config = get_config(ctx.guild.id)
allowed_users = config.get('allowed-users', [])
if not users:
await ctx.send(f"You didn't specify any users!")
return
for user in users:
if user.id not in allowed_users:
allowed_users.append(user.id)
config['allowed-users'] = allowed_users
update_config(ctx.guild.id, config)
await ctx.send(f"Added {', '.join(user.name for user in users)} to the whitelist!")
Оболочка:
def validate_channel(func):
async def inner(ctx: commands.Context, message, *args, **kwargs):
if ctx.channel.type is discord.ChannelType.private:
await ctx.send("This command cannot be run from direct messages.")
else:
return func
return inner
Но это просто не работает, что бы я ни пытался, кто-нибудь может мне помочь?
Благодарю вас! Благодаря вашему комментарию я узнал о проверках discord.py и о том, как их использовать, мне удалось очистить свой код, а также реализовать функцию, о которой я просил в этом вопросе :)