Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在discord.py中获取DM消息_Python_Discord_Discord.py - Fatal编程技术网

Python 在discord.py中获取DM消息

Python 在discord.py中获取DM消息,python,discord,discord.py,Python,Discord,Discord.py,所以我有这个密码 import discord from discord.ext.commands import Bot from discord import DMChannel TOKEN = "bot token" client = Bot (command_prefix='!') @client.command(name='dm', pass_context=True) async def dmsend(ctx): user = await client.fe

所以我有这个密码

import discord
from discord.ext.commands import Bot
from discord import DMChannel
TOKEN = "bot token"
client = Bot (command_prefix='!')
@client.command(name='dm', pass_context=True)
async def dmsend(ctx):
    user = await client.fetch_user("user ID")
    await DMChannel.send(user, "Hello there!")
client.run(TOKEN)

如果用户写入,它基本上会向特定用户发送一条消息!马克。但是,有没有办法通过dms实现这一点?所以每次我收到带有的消息!dm在我的dms下,它将在
#general
频道中超越它。

您可以在某些地方添加一些约束条件并使代码更简单

首先:使用
@commands.dm_only()
,从而确保或仅允许在私有消息中执行该命令

Second:如何查询消息作者有点复杂,因此不应使用
获取
,否则可能会受到速率限制。最好的方法是使用以下命令:
user=ctx.author

Third:定义一个
常规
频道或其他你可以使用的
客户端。获取频道(ChannelID)

查看完整代码:

@client.command()
@commands.dm_only()#只能在机器人程序DMs中使用
异步def dmsend(ctx):
user=ctx.author
wait user.send(“你好!”)#向命令的作者发送DM
general=client.get_通道(ChannelID)#定义常规通道
wait general.send(f“发送DM到{ctx.author}”)#在DM之后发送您的文本

另请参阅,以了解更多信息

您希望用户能够在bot的DMs中使用命令
dmsend
,如果用户这样做,输出应发送到
#general
聊天室?我真的不明白你的问题,这正是我的问题@Dominikt非常感谢你!嘿,嗯,还有一个关于我计划的其他事情的问题。有没有办法复制用户发送给我的消息?我真的很感激answer@Haider你可以就此提出另一个问题。必须考虑更多或其他因素