我知道elif user == whitelist:中的两个值是相同的,应该触发elif语句,但是代码只是传递elif语句并转到else语句。当我放入elif user == "562448514349662208":时,elif语句可以工作,但是我希望elif语句能够从变量中读取数据。我用其他变量做了一些测试,但由于某些原因,当我与一个变量进行比较时,elif语句就不能工作了
下面是我的更多代码,以防您需要更多上下文
whitelist = "562448514349662208"
user = int(message.author.id)
if message.author == bot.user:
content = message.content[3:]
color = discord.Color(value=int("%06x" % random.randint(0, 0xFFFFFF), 16))
embedvar = discord.Embed(description=content, color=color)
await message.delete()
await message.channel.send(embed=embedvar)
if user == whitelist:
content = message.content[3:]
color = discord.Color(value=int("%06x" % random.randint(0, 0xFFFFFF), 16))
embedvar = discord.Embed(description=content, color=color)
await message.channel.send(embed=embedvar)
else:
content = user
color = discord.Color(value=int("%06x" % random.randint(0, 0xFFFFFF), 16))
embedvar = discord.Embed(description=content, color=color)
await message.channel.send(embed=embedvar)发布于 2020-07-17 01:40:53
您的类型都不匹配:
whitelist = "562448514349662208" # type: str
user = int(message.author.id) # type: int <-- I don't think you want this!
if message.author == bot.user:
content = message.content[3:] # type: str
color = discord.Color(value=int("%06x" % random.randint(0, 0xFFFFFF), 16))
embedvar = discord.Embed(description=content, color=color)
await message.delete()
await message.channel.send(embed=embedvar)
if user == whitelist:
content = message.content[3:] # type: str
color = discord.Color(value=int("%06x" % random.randint(0, 0xFFFFFF), 16))
embedvar = discord.Embed(description=content, color=color)
await message.channel.send(embed=embedvar)
else:
content = user # type: int
color = discord.Color(value=int("%06x" % random.randint(0, 0xFFFFFF), 16))
embedvar = discord.Embed(description=content, color=color)
await message.channel.send(embed=embedvar)基于content被分配给字符串片这一事实(我认为?)在其中的两个分支中,我猜您实际上希望user也是一个字符串,这既是为了与白名单进行比较,也是为了设置content。只需从第二行删除int转换即可。
https://stackoverflow.com/questions/62940322
复制相似问题