大家好,我改变了过去问题中的代码,试图简化它,但现在我遇到了另一个问题
因此,我有一段代码,它检查某个角色并更改角色,但是当我将命令输入discord(即//leave@name-time-reason)时,“if”或“elif”语句都不会运行
我没有收到反馈,没有错误,只是机器人没有任何反应
下面是代码,如果有人能告诉我是什么导致语句不能正常运行,我将不胜感激
(我曾尝试将“elif”语句与“if”语句互换,但没有效果。)
@client.command()
@commands.has_role(876994087214018571)
async def leave(ctx, member: discord.Member = None, time: str = '', *, reason: str = ''):
if not member:
member = ctx.author
loa = ctx.guild.get_role(848032714715561985)
mod = ctx.guild.get_role(848032880709074944)
smod = ctx.guild.get_role(851617257138028645)
amod = ctx.guild.get_role(848057125283954688)
if member.has_role(848032880709074944):
await member.add_roles(loa)
await member.remove_roles(mod)
await ctx.send("I have filed your Leave, take care, we look forward to your return!")
elif member.has_role(851617257138028645):
await member.add_roles(loa)
await member.remove_roles(smod)
await ctx.send("I have filed your Leave, take care, we look forward to your return!")
elif member.has_role(848057125283954688):
await member.add_roles(loa)
await member.remove_roles(amod)
await ctx.send("I have filed your Leave, take care, we look forward to your return!")
modLogEmbed = discord.Embed(title='Leave Logs',
description="A member of Staff is going on leave! " + '<@' + str(member.id) + '>', color=0x000000)
modLogEmbed.add_field(name="Time",
value=(time), inline=False)
modLogEmbed.add_field(name="Reason for Leave:",
value=(reason), inline=False)
modLogEmbed.set_footer(text="LeaveManager Bot")
modLogEmbed.set_author(name='Leave Manager')
botLogChannel = client.get_channel(874959002172268685)
await botLogChannel.send(embed=modLogEmbed)
此外,我真的为代码的设置方式表示诚挚的歉意,我真的不知道如何像其他成员一样使其正确布局
嗯,
member.has_roles
是问题所在,成员没有“has\u role”属性也许可以试试这个-使用
find
和lambda
来查找你的id
是否在roles
的任何元素中我用其他角色测试过,效果很好
相关问题 更多 >
编程相关推荐