【问题标题】:Discord.py pausing the discord bot for a momentDiscord.py 暂停 discord 机器人片刻
【发布时间】:2021-07-18 19:18:14
【问题描述】:

我正在为我朋友的频道编写一个不和谐机器人很开心,但我需要一些帮助: 我正在跟踪一个特定朋友发送的消息并将他拖回来,但我不想在他发送的每条消息上都拖他。所以我想在机器人发送巨魔消息后让机器人休眠一段时间,比如说 20 秒,然后跟踪未来的消息以再次巨魔他。

我尝试使用 time.sleep() 但这只会延迟机器人的响应时间,导致它连续发送大量消息。我只想在收到巨魔消息后停用它一段时间。

我隐藏了部分账户信息,但基本代码如下:

@client.event
async def on_message(message):
        await message.channel.send('insert troll massage here')

提前致谢!

【问题讨论】:

    标签: python discord discord.py


    【解决方案1】:

    您不想停止机器人的执行。您只是希望机器人忽略在特定时间戳内给出的消息。

    作为一个粗略的草案,我们可以使用一个全局变量来做到这一点。要延迟一分钟,请考虑

    from datetime import datetime, timedelta
    
    LAST_TROLL = datetime.fromtimestamp(0) # A loooooong time ago
    TIME_TO_DELAY = timedelta(minutes=1)
    
    @client.event
    async def on_message(message):
        global LAST_TROLL
        now = datetime.now()
        if now - LAST_TROLL > TIME_TO_DELAY:
            await message.channel.send('insert troll massage here')
            LAST_TROLL = now
    

    如果您正在编写一个大规模的机器人,您会希望机器人被很好地封装在一个类中,然后这个变量将是该类的一个实例变量。

    【讨论】:

    • 最后一行应该是LAST_TROLL = now
    • @Ceres 啊,我很喜欢在晚上 11:30 写代码。感谢您的修复:)
    • 谢谢你,亲爱的朋友!祝你有个美好的星期天! (漂亮的个人资料图片顺便说一句哈哈)
    • 您还必须使用global 关键字来实际编辑全局变量,而不是创建一个新的本地变量
    猜你喜欢
    • 2021-05-24
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2019-12-11
    • 2021-09-04
    • 2022-01-21
    相关资源
    最近更新 更多