#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
делает, но, надеюсь, я ответил на ваш вопрос.