静音命令不起作用,没有错误信息;不和谐蟒蛇

时间:2021-02-09 22:33:01

标签: python python-3.x discord.py

我正在尝试为我的 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 还很陌生,所以请原谅我缺乏技能:)

2 个答案:

答案 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 的任何人解决此问题:)