【问题标题】:How to make Discord bot NOT send message if no one posted如果没有人发帖,如何让 Discord bot 不发送消息
【发布时间】:2018-03-06 13:25:23
【问题描述】:

以下用 Python 编写的 Discord 机器人每 6 小时发送一次随机消息。如果在机器人之后没有人在频道中发布,我该如何修改代码以便机器人不会再次发布?

代码:

import os
import discord
import asyncio
import random
from messages import messages_list
from copy import deepcopy

key = os.environ['BOT_TOKEN']

client = discord.Client()

async def background_loop():
    await client.wait_until_ready()
    messages = deepcopy(messages_list)
    cleanmessages = deepcopy(messages_list)
    while not client.is_closed:
        channel = client.get_channel("Channel_ID")
        if not messages:
            messages = deepcopy(cleanmessages)
        await client.send_message(channel, messages.pop(random.randrange(0, len(messages))))
        await asyncio.sleep(21600)

client.loop.create_task(background_loop())
client.run(key)

【问题讨论】:

  • 你尝试了什么?

标签: python python-3.x discord discord.py


【解决方案1】:

我们将保存我们发送的消息,然后使用client.logs_from 查看该消息之后的所有消息。

async def background_loop():
    await client.wait_until_ready()
    last_message = None
    messages = deepcopy(messages_list)
    cleanmessages = deepcopy(messages_list)
    channel = client.get_channel("Channel_ID")

    while not client.is_closed:
        if not messages:
            messages = deepcopy(cleanmessages)
        if len([x async for x in client.logs_from(channel, limit=2, after=last_message)]) > 1:
            content = messages.pop(random.randrange(0, len(messages)))
            last_message = await client.send_message(channel, content)
        await asyncio.sleep(21600)

【讨论】:

  • 谢谢@Patrick Haugh,但现在机器人根本没有发布任何事情
  • @RompelSt0mpel 哎呀,是last_message and ...。因为last_message是从None开始的,所以没有机会第一次发帖。给我一秒钟。
  • @RompelSt0mpel 看起来Noneafter 的有效值,因此删除last_message and 就足够了。
  • 似乎 Python 不喜欢 last_message 行,因为我收到以下错误:last_message = await client.send_message(channel, content)和缩进中的空格
  • @RompelSt0mpel 只需删除该行前面的缩进并以与其余代码相同的方式重新缩进。
猜你喜欢
  • 2021-09-17
  • 2020-08-16
  • 2020-04-29
  • 2018-05-03
  • 2020-12-01
  • 2021-03-02
  • 2021-01-12
  • 2021-06-05
  • 2021-01-10
相关资源
最近更新 更多