2017-08-12 37 views
0

使用我的機器人,您將輸入兩個輸入,一個是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

回答

0

不和諧的提到通過<@User_ID>完成,因此而不是發送@Person,你需要發送<@1957217385902874>或東西的影響。

可以在D.py通過server.get_member_named('Person#0001')獲得一個成員對象的名字,但這可能並不總是可行的,因爲人們可以改變他們的名字。

相關問題