📜  检查消息是否在 dm discord.py - Python (1)

📅  最后修改于: 2023-12-03 14:55:49.445000             🧑  作者: Mango

检查消息是否在 DM Discord.py - Python

在 Discord 中,我们可以通过 Python Discord.py 库来编写自己的 Bot。其中一种常见的情况是,需要检查消息是否在 DM(Direct Message,即私信)中发送而非在服务器频道中。

代码示例
@bot.command()
async def my_command(ctx):
    """
    如果命令是从私信中发出,Bot 将回复“你在私信中”;
    否则,Bot 将回复“你在服务器频道中”
    """
    if isinstance(ctx.channel, discord.DMChannel):
        # 如果消息是从私信中发出,ctx.channel 将是 discord.DMChannel 类型的
        await ctx.send("你在私信中")
    else:
        await ctx.send("你在服务器频道中")
代码解释

在 Discord.py 中,当 Bot 收到消息时,会调用一个函数(或称“命令”),这个函数需要一个 ctx 参数,代表这个消息的上下文(包括哪个服务器、哪个频道等等)。可以通过这个 ctx 参数的 channel 属性来获取这个消息的频道对象。如果这个消息是从私信中发送的,则 ctx.channel 将是 discord.DMChannel 类型的。因此,我们只需要检查 ctx.channel 的类型即可知道消息是否在私信中。

如果消息在私信中,我们就可以使用 ctx.send() 函数来回复用户。如果消息不在私信中,我们可以使用 ctx.send() 回复同一个服务器频道中。