【问题标题】:Discord.py library sending message upon member updateDiscord.py 库在成员更新时发送消息
【发布时间】:2021-10-23 11:03:36
【问题描述】:

这就是我已经尝试通过使用它的其他功能来获取我认为不和谐服务器用于该机器人的消息通道的方式:

@client.event
async def on_message(message):
    global message_channel
    message_channel = message.channel

我想在用户使用此功能下线时向他们发送信息告别

@client.event
async def on_member_update(before, after):
    print(str(before.status), str(after.status))
    if str(before.status) == "online" and str(after.status) == "offline": 
        print("someone went offline")
        try: await message_channel.send(f'Goodbye, {after.user}')
        except: print('failed to send goodbye message')

如果我能找到一种方法来完成这项工作,我将不胜感激(因为目前 on_member_update() 函数根本没有打印任何内容,或者如果我可以获得从机器人发送最后一条消息的通道(这意味着这将仅在机器人至少使用一次后就位)

【问题讨论】:

  • 是否有任何错误/回溯?
  • 事件只是没有被触发,所以没有。

标签: python asynchronous discord discord.py


【解决方案1】:

我认为您应该为再见消息创建一个自己的频道或为其定义一个额外的频道。这看起来像这样:


@client.event
async def on_message(message):
    pass#your code here



@client.event
async def on_member_update(before, after):
    print(str(before.status), str(after.status))
    if str(before.status) == "online" and str(after.status) == "offline": 
        channel = cliet.get_channel(channelId)
        print("someone went offline")
        try: 
            await channel.send(f'Goodbye, {after.user}')
        except: 
            print('failed to send goodbye message')

如果您想在用户最后写入的频道中写下再见消息,您可以简单地与用户及其最后的频道制作一个 txt。您也可以使用 json 执行此操作。如果您在 on_message 中执行此操作,您将获得服务器上任何人最后输入的频道或机器人的 dms 中的频道。因此,如果 userXYZ 通过 DM 编写 BOT “Hello World”,然后另一个用户 userABC 下线,BOT 将通过 DM 向 userXYZ 发送 Goodbye 消息。

【讨论】:

    猜你喜欢
    • 2020-09-29
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 2020-06-16
    • 2021-05-02
    • 2021-07-08
    • 2021-03-26
    • 2021-07-18
    相关资源
    最近更新 更多