如何使我的discord bot在Python中读取dms?

如何使我的discord bot在Python中读取dms?,python,discord,bots,dm,Python,Discord,Bots,Dm,我有一个discord机器人,它工作正常,我只有一个问题:如果机器人由于某个命令向某人发送DM,我希望它接收该DM的答案。我不认为它能为DMs工作。我试过在网上找到的一些东西,但都没能奏效。任何帮助都将不胜感激:) 这是我试过的(很抱歉我不能给你那么多) on_private_message不是不和谐事件,我们只需使用on_message并检查它是否是dm @bot.event() 异步def on_消息(消息): 如果message.guild为“无”: #这是一条dm消息 但是,我发现您的

我有一个discord机器人,它工作正常,我只有一个问题:如果机器人由于某个命令向某人发送DM,我希望它接收该DM的答案。我不认为它能为DMs工作。我试过在网上找到的一些东西,但都没能奏效。任何帮助都将不胜感激:) 这是我试过的(很抱歉我不能给你那么多)


on_private_message
不是不和谐事件,我们只需使用
on_message
并检查它是否是dm

@bot.event()
异步def on_消息(消息):
如果message.guild为“无”:
#这是一条dm消息
但是,我发现您的问题是在私人消息中接受用户的回答,这可以通过
wait\u for
完成

@bot.command()
异步定义(ctx):
等待ctx.author.send('hello here')
等待ctx.author.send(“您有30秒时间回复”)
msg=bot.wait_for('message',check=lambda x:x.author==ctx.author和x.channel==ctx.author.dm_通道,超时=30)
#用味精做东西
参考资料:

在私有消息上
不是不和谐事件,我们只需在消息上使用
并检查它是否是dm

@bot.event()
异步def on_消息(消息):
如果message.guild为“无”:
#这是一条dm消息
但是,我发现您的问题是在私人消息中接受用户的回答,这可以通过
wait\u for
完成

@bot.command()
异步定义(ctx):
等待ctx.author.send('hello here')
等待ctx.author.send(“您有30秒时间回复”)
msg=bot.wait_for('message',check=lambda x:x.author==ctx.author和x.channel==ctx.author.dm_通道,超时=30)
#用味精做东西
参考资料:

好的,根据您的问题,它说,您希望接收dms的答案,为了接收答案,您可能会问一个问题,因此我将使用一个示例进行解释,因此假设您运行一个命令
!问题
,机器人将对您或任何运行该命令的人进行dm,需要检查其答案的问题。为此,我建议使用
bot.wait_For()
:-


好的,根据你的问题,它说,你想要收到dms的答案,为了得到答案,你可能问了一个问题,所以我将用一个例子来解释,所以假设你运行一个命令
!问题
,机器人将对您或任何运行该命令的人进行dm,需要检查其答案的问题。为此,我建议使用
bot.wait_For()
:-


谢谢你的快速回答,我也在你的信息中使用了
,但不知道这会有什么不同。但是,当我使用第一个代码段时,bot将只回复DMs,因为我使用这些
@bot.command()
东西来定义命令。我如何解决这个问题?第一部分是让机器人只响应dms,我已经在第二部分解释过了,这个命令可以在任何地方使用,并将对用户进行dm并等待响应,不确定您的疑问是什么,我想我没有正确解释。所以我不希望机器人只响应DMs。它还有一些其他命令要在服务器中使用。但是我想添加一个只有我才能使用的命令,通过该命令,机器人应该向服务器上的所有人发送消息并请求他们的生日(对于生日机器人)。(这很好。)但现在的问题是,机器人无法读取他们的回复。当我复制您的第一个代码段时(实际上没有第二个代码段,因为现在我使用了
message.guild
),bot将只回复DMs,服务器命令将不起作用。我猜肯定有一些
其他的
-语句?是的,但您说您正在使用
bot.command
,第一部分没有使用bot_命令,它只是回复dm消息,使用else语句,您可以让它回复公会消息,也可以阅读感谢您的快速回复,我也在_消息上使用了
,但不知道这会有什么不同。但是,当我使用第一个代码段时,bot将只回复DMs,因为我使用这些
@bot.command()
东西来定义命令。我如何解决这个问题?第一部分是让机器人只响应dms,我已经在第二部分解释过了,这个命令可以在任何地方使用,并将对用户进行dm并等待响应,不确定您的疑问是什么,我想我没有正确解释。所以我不希望机器人只响应DMs。它还有一些其他命令要在服务器中使用。但是我想添加一个只有我才能使用的命令,通过该命令,机器人应该向服务器上的所有人发送消息并请求他们的生日(对于生日机器人)。(这很好。)但现在的问题是,机器人无法读取他们的回复。当我复制您的第一个代码段时(实际上没有第二个代码段,因为现在我使用了
message.guild
),bot将只回复DMs,服务器命令将不起作用。我猜肯定有一些
其他的
-语句?是的,但您说您正在使用
bot.command
,第一段不使用bot_命令,它只是回复dm消息,使用else语句,您可以让它回复公会消息,也可以读取
@bot.event
async def on_private_message(ctx):
    if ctx.channel.id == ctx.author.dm_channel.id:
        # here I've tried using ctx.content in several ways but there was no ctx.content...
bot.command()
async def question(ctx):
    channel = await ctx.author.create_dm()
    def check(m):
        return m.author == ctx.author and m.channel == channel
    try:
        await ctx.author.send("") #your question inside ""
        msg = await bot.wait_for('message', timeout=100.0, check=check)
        message_content = msg.content
        print(message_content) #you can do anything with the content of the message
    except:
        await ctx.author.send("You did not answer in given time")