两个明显精确的字符串被认为是不同的

问题描述:

使用我的机器人,您将输入两个输入,一个是score和一个username。这里的问题与username。这是代码:两个明显精确的字符串被认为是不同的

from discord.ext import commands 

bot = commands.Bot(command_prefix='!', description="Moderates the server") 


@bot.command(pass_context=True) 
async def rate(stuff, score, username): 
    user_scores = open("userratings.txt", "r") 
    ratings = [] 
    with user_scores: 
     for line in user_scores: 
      newline = line.split("#") 
      if newline[1].endswith("\n"): 
       newline[1] = newline[1][:-1] 
      ratings.append(newline) 
    for item in ratings: 
     item[1] = item[1].split() 
    for item in ratings: 
     await bot.say(item[0] + "#" + item[1][0] + " " + username) 
     if username == item[0] + "#" + item[1][0]: 
      await bot.say("HI") 
      break 


bot.run("token") 

我不会透露隐私原因当然令牌。在最后的for循环内的if声明中出现问题,在此循环中我将输入的用户名与用户名列表进行比较,这些用户名是通过item[0] + "#" + item[1][0]逐一稳定生成的。我在我自己的用户名(@Anthony (Tony's Farm)#3370)和机器人输入输出相同的字符串,以及在这里看到:

enter image description here

类似于你怎么会在这里ping通人@username,您ping其他用户@username#id_number其中提供给你的服务器。正如你所看到的,即使它能够完美地复制我的用户名和ID,我的机器人也不会说“嗨”。正如你后面看到的那样,我用白色复制和粘贴了这些字符,因此它将两个字符串(由程序制作的字符串和我制作的字符串)相同。

那么,即使当我复制机器人的输出时,为什么两个明显精确的字符串出现不同,它被认为是相同的?

编辑:我试图调试,并没有帮助:

enter image description here

+0

你比较了字符串逐个字符吗?因为如果Python说他们不平等,他们不是。 – Tomalak

+0

@Tomalak是的。我复制并粘贴了机器人输出的内容,当我输入它时,就像你在机器人后面看到的一样,它会咬住我,这是不可能的,除非你有确切的字符串 –

+0

不能复制粘贴和目视检查。写一个循环,向控制台输出两行你认为相等的字符代码。 – Tomalak

不和谐的提到通过<@User_ID>完成,因此而不是发送@Person,你需要发送<@1957217385902874>或东西的影响。

可以在D.py通过server.get_member_named('Person#0001')获得一个成员对象的名字,但这可能并不总是可行的,因为人们可以改变他们的名字。