代码之家  ›  专栏  ›  技术社区  ›  Adam Varhegyi

我如何让Discord bot听我的DMs而不是简单的通道消息?

  •  1
  • Adam Varhegyi  · 技术社区  · 2 年前

    到目前为止,它在频道中运行良好,但是 我想把它修改成一个只支持DM的问答机器人。

    client.on('messageCreate', async message => {
    

    好的,但只在通道中,而不是在DMs中。

    'directMessageCreate' 或者别的什么,但我还没有找到解决办法。

    我还尝试搜索教程,每个人都在公共频道用公共命令启动bot-DM,我想做一个只支持DM的bot。

    我如何使我的公共机器人成为只支持DM的机器人?

    E D I T:

    DIRECT_MESSAGES 已在上列出。还有什么遗漏吗?

    const client = new discord.Client({
        intents: ["GUILDS", "GUILD_MESSAGES", "DIRECT_MESSAGES"]
    });
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Zsolt Meszaros    2 年前

    您需要启用所需的意图和部分,以便能够收听直接消息。正如您已经添加的那样 DIRECT_MESSAGES ,您一定错过了 CHANNEL partial . DMs需要它。虽然服务器通道始终可用,但DM通道可以取消缓存,这就是为什么您需要这样添加它:

    const client = new discord.Client({
        intents: ["GUILDS", "GUILD_MESSAGES", "DIRECT_MESSAGES"],
        partials: ['CHANNEL']
    });
    

    channel.type 忽略任何非DM的内容:

    client.on('messageCreate', (message) => {
        if (message.author.bot || message.channel.type !== 'DM') return;
    
        // handle the command sent in a DM
    });