[英]why are my if and elif statements not running properly?
嗨,我已經更改了過去問題的代碼以嘗試簡化它,但是現在我遇到了另一個問題,
所以我有這段代碼可以檢查某個角色並更改角色,但是當我將命令輸入 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_role”
也許試試這個-使用find
和lambda
來查找您的id
是否在roles
的任何元素中
我已經使用其他角色對其進行了測試,它工作正常。
@commands.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)
result = find(lambda x: x.id == 848032880709074944, member.roles)
if result:
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!")
await ctx.send('done')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.