我正在尝试创建一个discord bot,它能够在调用bot时使某个用户静音,如“mute@”。该命令应向用户添加静音角色,以便用户无法发送消息。
我有以下代码:
import discord
from discord.ext import commands
from discord.utils import get
client = commands.Bot(command_prefix=',')
@client.event
async def on_ready():
print(f'{client.user} has connected to Discord and is ready to mute!')
@client.command(aliases=[',mute'])
async def mute(member: discord.Member):
role = get(member.server.roles, name='Muted')
await member.add_roles(member, role)
if member.has_role('Muted'):
await member.channel.send(f'{member} has been muted')
当我尝试使用这个命令时,我没有看到明显的效果。为什么不添加角色?
>
它是成员。Guild.roles
,而不是. server
(别担心,这不仅仅发生在你身上)
成员的正确用法。添加角色()
是成员。添加角色(您希望添加的角色)
,如文档中所述。所以,简单的解释是:如果你有成员。add_roles()
您不必为函数指定成员
参数。
我猜你想要的if
在函数中,所以我把它移动到那里,带有一个返回
和另一条消息,这样如果他已经得到了这个角色,它就不会试图添加它,并且节省了很多时间。此外;您无法从该成员获取通道,因为该成员不属于通道。
对于命令,始终必须首先传递上下文
(也称为“ctx”)参数。因此,您可以将其发送回您的机器人的响应。
因此,您的修订代码是:
import discord
from discord.ext import commands
from discord.utils import get
client = commands.Bot(command_prefix=',')
@client.event
async def on_ready():
print(f'{client.user} has connected to Discord and is ready to mute!')
@client.command(aliases=['mute'])
async def mute(ctx, member: discord.Member):
if member.has_role('Muted'):
return await ctx.send(f'{member} is already muted!')
role = get(member.Guild.roles, name='Muted')
await member.add_roles(role)
await ctx.send(f'{member} has been muted!')
当我在CSS代码中添加回退字体时,我的网站不再显示我已激活的opentype功能。为什么会这样? Opentype功能可用于:字体系列:“Ogg罗马”; Opentype功能不起作用:字体系列:“Ogg罗马”,乔治亚州,衬线; 这是我的网站:https://cpdesignery.com/
问题内容: 我正在阅读angularjs.org上的开发人员指南的指令部分,以刷新我的知识并获得一些见解,并且我尝试运行示例之一,但指令ng- hide不适用于自定义指令。 这里是jsfiddle:http : //jsfiddle.net/D3Nsk/: 知道为什么会这样吗? 解 似乎标记上的变量dialogIsHidden已经在指令中引用了作用域变量,而不是控制器中的变量;鉴于该指令具有其自己
问题内容: 我有一个项目,我试图在回调中使用weakrefs,但我不明白我在做什么错。我创建了简化的测试,以显示我困惑的确切行为。 为什么在此测试中test_a可以正常工作,但是self.MyCallbackB的weakref在类初始化和调用test_b之间消失了?我以为只要实例(a)存在,对self.MyCallbackB的引用就应该存在,但是不存在。 问题答案: 您需要一个WeakMethod
问题内容: 以下Java代码无法编译: 编译器报告: 奇怪的是,标记为“ OK”的行可以正常编译,但是标记为“ Error”的行失败。它们看起来基本相同。 问题答案: 您的lambda需要与保持一致。如果您参考JLS#15.27.3(Lambda的类型): 如果满足以下所有条件,则lambda表达式与函数类型一致: […] 如果函数类型的结果为void,则lambda主体为语句表达式(第14.8节
我一直在一个多租户项目上使用SpringDataJPA,在hibernate的帮助下,我使用http头在租户之间正确路由数据(使用和),但当我切换到SpringDataREST并使用其endpoint时,所有数据都会转到公共模式为什么路由不再工作?SpringDataREST使用hibernate吗? 这是我的依赖项
问题内容: SimpleDateFormat: 抛出的异常: 有任何想法吗? 编辑: 感谢您的快速解答。你们都是正确的,我只是错过了SimpleDateFormat文档中的一个关键句子-我可能应该把它称为一天。 问题答案: 从SimpleDateFormat javadocs : 月:如果图案字母的数目为3或更多,则将月份解释为文本;否则,将其解释为数字。 尝试使用“ MMM dd yyyy”之类