在没有给出命令的情况下,如何让我的机器人DM特定的用户ID?

时间:2019-08-03 07:32:48

标签: python bots discord private dm

当某人DM是我的机器人时,我将其打印到发送消息的控制台上,该消息是什么,以及该消息的发送时间。我希望漫游器然后让我DM通知我有人发消息,和/或通知谁,何时何地。

我已经看到许多与此有关的不同解决方案的问题。其中许多已经过时,因此无法与我的代码一起使用。我在Spyder上使用Python 3.7。

我可以通过bot命令将bot DM给一个用户,但不能将bot DM赋予一个特定的用户ID。

以下是打印接收到控制台的DM消息的代码。同样,这部分没有问题。只需要将此信息私下发给我。

if isinstance(message.channel, discord.DMChannel):
        print("******************************")
        print("DM Recieved by: " + message.author.name)
        print("Time:", str(datetime.datetime.now()))
        print("Message: " + message.content)
        print("******************************")

更新代码:

if client.user.mentioned_in(message) and message.mention_everyone is False:
        await message.delete()
        channel = message.channel
        await channel.trigger_typing()
        await channel.send("{0.mention} Please don't tag me.".format(message.author))
        print("**************************************************")
        print("Mentioned By: " + message.author.name)
        print("Time:", str(datetime.datetime.now()))
        print("Message: " + message.clean_content)
        print("Channel: " + str(message.channel))
        print("**************************************************\n")

        #DM me when bot get's mentioned.
        client.get_user(305508822485827584)
        await user.send("Test")

1 个答案:

答案 0 :(得分:2)

在我看来,您正在使用discord.py的旧异步版本-我强烈建议移至较新的rewrite分支,因为对异步版本的支持现已停止。

Migrating to v1.0 (rewrite)

client.get_user(ID)是一种重写方法,在discord.py的异步版本中不存在。在这种情况下,您可以使用client.get_user_info(ID)

希望这会有所帮助-编码愉快!

编辑:这是您需要使用的代码:

user = client.get_user(305508822485827584)
await user.send("Test")