使用我的機器人,您將輸入兩個輸入,一個是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
)和機器人輸入輸出相同的字符串,以及在這裏看到:
類似於你怎麼會在這裏ping通人@username
,您ping其他用戶@username#id_number
其中提供給你的服務器。正如你所看到的,即使它能夠完美地複製我的用戶名和ID,我的機器人也不會說「嗨」。正如你後面看到的那樣,我用白色複製和粘貼了這些字符,因此它將兩個字符串(由程序製作的字符串和我製作的字符串)相同。
那麼,即使當我複製機器人的輸出時,爲什麼兩個明顯精確的字符串出現不同,它被認爲是相同的?
編輯:我試圖調試,並沒有幫助:
你比較了字符串逐個字符嗎?因爲如果Python說他們不平等,他們不是。 – Tomalak
@Tomalak是的。我複製並粘貼了機器人輸出的內容,當我輸入它時,就像你在機器人後面看到的一樣,它會咬住我,這是不可能的,除非你有確切的字符串 –
不能複製粘貼和目視檢查。寫一個循環,向控制檯輸出兩行你認爲相等的字符代碼。 – Tomalak