Discord.py бот не отвечает на команду отключения звука

#python #discord #bots

Вопрос:

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

 @commands.has_permissions(manage_roles=True)
async def mute(ctx, user: discord.Member, *, reason="No reason provided"):
    await user.mute(reason=reason)
    role = discord.utils.get(ctx.guild.roles, name="Muted")
    mute = discord.Embed(title=f"User {user.name}#{user.discriminator} has been muted. <a:m_verifyblack:850825891780100096>", color=0xF4D03F, description=f"Reason: {reason}nBy: {ctx.author.mention}")
    await ctx.message.delete()
    await ctx.channel.send(embed=mute)
    await user.send(embed=mute)
@mute.error
async def mute_error(ctx, error):
    if isinstance(error, commands.MissingPermissions):
        await ctx.send("**:no_entry_sign: You cant do that!**")```
 

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

1. Вы упускаете commands.command , или что бы вы ни использовали, в самом начале.

Ответ №1:

Похоже, вам не хватает @client.command (если вы это сделали client = commands.Bot(command_prefix="prefix") в начале файла в разделе импорт) в начале команды. Чтобы исправить это, вы бы сделали

 import discord
from discord.ext import commands
from discord.ext.commands import MissingPermissions

client = commands.Bot(command_prefix="your_prefix")

@client.command(aliases=['m'])
@commands.has_permissions(manage_roles=True)
async def mute(ctx, user: discord.Member, *, reason="No reason provided"):
    role = discord.utils.get(ctx.guild.roles, name="Muted")
    mute = discord.Embed(title=f"User {user.name}#{user.discriminator} has been muted. <a:m_verifyblack:850825891780100096>", color=0xF4D03F, description=f"Reason: {reason}nBy: {ctx.author.mention}")
    await user.mute(reason=reason)
    await ctx.message.delete()
    await ctx.channel.send(embed=mute)
    await user.send(embed=mute)

@mute.error
async def mute_error(ctx, error):
    if isinstance(error, commands.MissingPermissions):
        await ctx.send("**:no_entry_sign: You cant do that!**")
 

Кроме того, вы, похоже, используете устаревшую версию discord.py . Попробуйте переключиться на Pycord, который является поддерживаемой ветвью ныне устаревшего discord.py. Я не совсем уверен, что user.mute делает, но, надеюсь, я ответил на ваш вопрос.