我正在嘗試為我的服務器的自定義機器人制作一個壞詞系統,但它似乎只聽第一個條件,而忽略第二個條件:
@bot.event
async def on_message(message):
###BAD WORDS CHECK
if message.author == bot.user:
pass
else:
if (any(x in message.content.lower() for x in words2)):
if "hack" or "crack" in message.content.lower():
await message.reply("I think you may be asking for illegal services or illegal advice. Please refer to rule #5 in the welcome channel!")
await message.channel.send("If you think this was a mistake please reply with $report!")
global CAN_REPORT
CAN_REPORT = "yes"
return
else:
pass
await bot.process_commands(message)
bot 會出于某種原因回應包含來自 words2 的任何單詞的任何訊息:
words2 = [
"instagram",
"snapchat",
"roblox",
"paypal",
"facebook",
"gmail",
"fortnite",
"minecraft",
"apex",
"youtube",
]
忽略訊息是否包含“hack”,這導致它回復每條談論社交媒體或游戲的訊息。目標是檢查兩個條件是否都為真。
任何幫助表示贊賞!
uj5u.com熱心網友回復:
使用這一行,if "hack" or "crack" in message.content.lower():您基本上是在檢查字串"hack"是否為真或"crack" in message.content.lower()為真。
因此檢查總是回傳真,因為"hack"永遠是真。
解決這個問題的方法是這樣的:
if "hack" in message.content.lower() or "crack" in message.content.lower():
或者,更好的是,像在第一次檢查中那樣做:
word_list = ["hack", "crack"]
if any(x in message.content.lower() for x in word_list):
uj5u.com熱心網友回復:
它的簡單只是添加:
if words2 in message.content.lower():
await message.delete()
await ctx.send('that word is banned')
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/325815.html
