如何让我的机器人在没有给出命令的情况下向特定用户 ID 发送 DM?
How can I get my bot to DM a specific user ID without a command given?
当有人 DM 是我的机器人时,我将它打印到发送消息的控制台、消息内容以及发送消息的时间。我希望机器人然后 DM 我通知我有人发消息,and/or 谁、什么以及什么时候。
我见过很多关于这个问题的不同解决方案。其中很多已经过时,因此不适用于我的代码。我在 Spyder 上使用 Python 3.7。
我可以让机器人根据机器人命令向用户发送私信,但无法将它发送给属于我的特定用户 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")
在我看来,您使用的是 discord.py 的旧异步版本 - 我强烈建议您移至较新的重写分支,因为对异步版本的支持现已停止。
client.get_user(ID)
是一种重写方法,在 discord.py 的异步版本中不存在。在这种情况下,您可以使用 client.get_user_info(ID)
。
希望这对您有所帮助 - 编码愉快!
编辑:这是您需要使用的代码:
user = client.get_user(305508822485827584)
await user.send("Test")
当有人 DM 是我的机器人时,我将它打印到发送消息的控制台、消息内容以及发送消息的时间。我希望机器人然后 DM 我通知我有人发消息,and/or 谁、什么以及什么时候。
我见过很多关于这个问题的不同解决方案。其中很多已经过时,因此不适用于我的代码。我在 Spyder 上使用 Python 3.7。
我可以让机器人根据机器人命令向用户发送私信,但无法将它发送给属于我的特定用户 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")
在我看来,您使用的是 discord.py 的旧异步版本 - 我强烈建议您移至较新的重写分支,因为对异步版本的支持现已停止。
client.get_user(ID)
是一种重写方法,在 discord.py 的异步版本中不存在。在这种情况下,您可以使用 client.get_user_info(ID)
。
希望这对您有所帮助 - 编码愉快!
编辑:这是您需要使用的代码:
user = client.get_user(305508822485827584)
await user.send("Test")