Discord.py如何使用机器人将发送的消息?

时间:2020-09-28 07:55:57

标签: python discord discord.py

import discord
from discord.ext import commands
async def anyfunc(ctx):
    await ctx.send(f"{ctx.message.author.mention}, "Hi!")
    bot_message_id = ((bot's_last_message)).id

在(())中添加什么以使漫游器记住它将发送的消息的ID? 有没有办法将下一条(例如,用户的)消息(尚未发送)的ID用作变量?

2 个答案:

答案 0 :(得分:1)

ctx.send()返回其发送的消息的discord.Message实例,因此您可以将其存储在变量中。

message = await ctx.send(f"{ctx.message.author.mention}, Hi!")
# do what you want with the message, in your case getting it's id
bot_message_id = message.id

关于第二个问题,如果要获得用户对该消息的响应(这样特定用户将发送下一条消息),则可以使用内置的wait_for。 / p>

def check(message):
    return message.author.id == the_id_of_that_user

message = await bot.wait_for("message", check=check)

这样,该漫游器就会从字面上wait for发送一条消息,使您的check函数返回True,或者在这种情况下,该用户发送的消息。有关详细信息,请参见相关的API documentation

答案 1 :(得分:-1)

我不太清楚您的问题,但我会尽力回答。根据{{​​3}},您可以使用channel.history().get()得到某人的最后一条消息。所以这是一个例子:

import discord
from discord.ext import commands
async def anyfunc(ctx):
    await ctx.send(f"{ctx.message.author.mention}, Hi!")
    bot_message_id = await ctx.channel.history().get(author__name="Bot's name").id

这可能会起作用,但是如果出现错误,也许您可​​以尝试使用author__id=bot's id而不是author__name