幾天前,我在這里打開了一個關于 bot message.content 的問題
現在,我希望機器人將同一文本中的兩個單詞替換為僅回復一條訊息。
到目前為止,我有這個。
@client.event
async def on_message(message):
if message.author == client.user:
return
words = ['test', 'winter']
changes = ['nice', 'summer']
for word in words:
if word in message.content:
await message.channel.send(f"{message.content.replace(word, changes[words.index(word)])}")
await client.process_commands(message)
這就是機器人所做的: here
出于某種原因,它只適用于其中一個詞。
uj5u.com熱心網友回復:
您每次都在回圈中將訊息發送到頻道
message.channel.send在所有替換回圈完成之前不要呼叫。
您可以考慮在回圈中進行所有更改并message.send在完成后使用單個更改
@client.event
async def on_message(message):
if message.author == client.user:
return
words = ['test', 'winter']
changes = ['nice', 'summer']
response_message = message.content
for word in words:
if word in message.content:
response_message = f"{response_message.replace(word, changes[words.index(word)])}" # in place update
await message.channel.send(response_message) # send this one after the replacement loop
await client.process_commands(message)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/343728.html
