我正在尝试为我的 Discord 机器人创建静音命令。我把所有的代码都打出来了,我很确定它应该可以工作。但是,每当我输入 N?mute 时,什么都不会发生,随后我的命令提示符中也不会显示任何内容。没有错误信息,什么都没有。我尝试在 async def mute() 之后打印,但也没有出现。
我有以下代码:
import random
import discord
from discord.ext import commands
import urllib.parse
import os
import pymongo
from pymongo import MongoClient
client = commands.Bot(command_prefix='N?')
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
@client.command()
@commands.has_role(743487766796697720)
async def mute(ctx, member: discord.Member):
role = discord.utils.get(ctx.guild.roles, name="Muted")
guild = ctx.guild
if role not in guild.roles:
perms = discord.Permissions(send_messages=False, speak=False)
await guild.create_role(name="Muted", permissions=perms)
await member.add_roles(role)
embed=discord.Embed(title="User Muted!", description="**{0}** was muted by **{1}**!".format(member, ctx.message.author), color=0xff00f6)
await message.channel.send(embed=embed)
else:
await member.add_roles(role)
embed=discord.Embed(title="User Muted!", description="**{0}** was muted by **{1}**!".format(member, ctx.message.author), color=0xff00f6)
await message.channel.send(embed=embed)
@mute.error
async def mute_error(ctx, error):
if isinstance(error, commands.MissingRole):
embed=discord.Embed(title="Permission Denied.", description="You don't have permission to use this command.", color=0xff00f6)
await message.channel.send(embed=embed)
@mute.error
async def mute_error(ctx, error):
if isinstance(error, commands.BadArgument):
embed=discord.Embed(title="Permission Denied.", description="That is not a valid member.", color=0xff00f6)
await message.channel.send(embed=embed)
我尝试创建一个 kick 命令 berore 但在搜索了 stackoverflow 和其他十几个网站以找出它不起作用的原因后,我放弃了。现在我想知道为什么两个 client.commands 到目前为止都没有工作。到目前为止,我只使用了 client.listen() 和 client.event(),它们都运行良好。我不知道这只是一个疏忽还是我做了一些愚蠢的事情,但我现在不知所措。我对 Discord.py 还很陌生,所以请原谅我缺乏技能:)
答案 0 :(得分:0)
您没有消息变量。而不是消息写ctx。
所以
await message.channel.send(embed=embed)
应该变成
await ctx.channel.send(embed=embed)
要查看命令提示符上的错误,请先删除所有错误命令。当我制作机器人时,错误命令没有让我在命令提示符上看到错误。也许试试那个。
答案 1 :(得分:0)
我通过将 bot.event 更改为 bot.listen 来修复它!确保您的事件受到限制,并且主要使用侦听和命令。我认为有超过 1 个 bot.event 杀死了我的代码。感谢大家的投入,我希望这可以为来自 Google 的任何人解决此问题:)