用Python编程Discord机器人我有一个meme命令,如何使它不太可能两次显示同一个meme?

2024-04-20 08:45:16 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我的机器人有一个模因命令。我一直在试图找出如何使同一个模因不太可能出现两次(它不断重复)。这是我的密码:

@client.event
async def on_message(message):
  if message.content.startswith(".meme"):
    subreddit = reddit.subreddit("cleanmemes")
    all_subs = []
    top = subreddit.top(limit = 75)

    for submission in top:
      all_subs.append(submission)
  
    random_sub = random.choice(all_subs)
    name = random_sub.title
    url = random_sub.url
    em = discord.Embed(title = name, color = 0xffff00)

    em.set_image(url = url)
    await message.channel.send(embed = em)

我是编程新手,有什么建议吗


Tags: name命令url密码messagesubmissiontitletop
2条回答

您是否可以尝试存储您已发送的Meme列表(即URL列表),并在发送邮件之前检查URL是否在您的列表中

下面是一个伪代码示例

# at the beginning of your code initialize an empty list of memes
sent_memes = []

# check if meme has been sent - skip if so
if url in sent_memes:
    pass

else: 
    # send meme
    sent_memes.append(url) # add url to list of sent_memes

这种方法将确保您永远不会发送两个相同的Meme(除非它们有不同的URL)

您可以将Meme的URL保存在json或txt文件中。然后,您可以将新的url与发送的url进行检查

@client.event
async def on_message(message):
  if message.content.startswith(".meme"):
    subreddit = reddit.subreddit("cleanmemes")
    all_subs = []
    top = subreddit.top(limit = 75)

    for submission in top:
      all_subs.append(submission)
    random_sub = random.choice(all_subs)
    name = random_sub.title
    url = random_sub.url
        with open('urls.txt', 'r+') as file:
        if url in file.read():
            return
        else:
            file.write(f'{url}\n')
    em = discord.Embed(title = name, color = 0xffff00)

    em.set_image(url = url)
    await message.channel.send(embed = em)

在这段代码中,必须首先创建一个urls.txt文件。然后,它会检查你之前发送的Meme的url。如果它以前发送过,它将返回,并且不会发送任何内容。如果没有,它会将其保存到该txt文件并发送meme

相关问题 更多 >