import asyncio
import random
import discord
memes = {
'r/dank_memes': {'imgur_url':'https://imgur.com/r/dankmemes/', 'trigger': 'get dank', 'memes':['get dank meme', 'sample meme']},
'r/cats': {'imgur_url':'https://imgur.com/r/cats/', 'trigger': 'meow', 'memes':['cat meme', 'i love cats']},
}
@client.event
async def on_message(message):
message.content = message.content.lower()
for name, trigger in memes.items():
if trigger['trigger'] in message.content:
#print(random.choice(memes[name]['memes'])) # This works fine
await client.send_message(message.channel, random.choice(memes[name]['memes']))
我正在制作一个discord机器人,当某个关键词出现在我的频道中时,它会随机发布我在网上刮下的模因。
我的问题是,当我在discord中键入“get dank”时,机器人会发送一堆模因:
get dank meme
get dank meme
dank 2
get dank meme
但当我在memes字典中键入“喵”或任何最后一个值时,它工作正常,只发送一个图像。
我发现这与
await
因为当我使用print()时,它只向控制台发送一次。看起来
等候
是必需的,因为没有它脚本将无法执行任何操作。在for循环中使用break也没有帮助。
有没有一种方法可以让循环在找到关键字后停止,或者只发送一张图像,然后使用
等候
.