如何检查用户是不是在共享频道中写消息并告诉他或她在特定于机器人的频道中写

Posted

技术标签:

【中文标题】如何检查用户是不是在共享频道中写消息并告诉他或她在特定于机器人的频道中写【英文标题】:How to check if a user is writing a message in a shared channel and tell him or her to write in a bot-specific channel如何检查用户是否在共享频道中写消息并告诉他或她在特定于机器人的频道中写 【发布时间】:2020-08-18 14:54:54 【问题描述】:

如何检查用户是否在共享频道中写消息并告诉他在特定于机器人的频道中写?

这是我试过的代码:

if (message.channel.id === "bot-playground")
    // write code here
else 
    message.channel.send("Write commands in #bot-playground.").then(msg => 
        timeout(3000, msg);
    );

【问题讨论】:

【参考方案1】:
    if (message.channel.id === "bot-playground")

这需要一个频道 ID,而不是名称。要获取频道的 ID,请右键单击它并选择 copy ID 然后使用它。如果您没有copy ID 按钮,您可能需要Enable developer mode

另外,您的提及可能无效

message.channel.send("Write commands in #bot-playground.")

this question了解更多

【讨论】:

【参考方案2】:

您的问题是由第一行 if (message.channel.id === "bot-playground") 您尝试使用频道名称作为 ID 引起的。

您要么需要使用频道的 ID 来查找它,您可以通过 enabling Developer Mode 获取它

或者,您可以像这样使用频道名称来查找它:

message.guilds.channels.cache.find(channel => channel.name === 'bots-playground')

【讨论】:

【参考方案3】:

用用于分配Discord#Client 对象的任何变量或常量替换客户端。

client.on("typingStart", (channel, user) => 

     const bot_channel = channel.guild.channels.cache.find(chan => chan.name == "bot-playground");

     if (channel.id != bot_channel.id) 
          return message.channel.send(`Write commands in <#$bot_channel.id>`);
     

);

【讨论】:

以上是关于如何检查用户是不是在共享频道中写消息并告诉他或她在特定于机器人的频道中写的主要内容,如果未能解决你的问题,请参考以下文章

毕设题目:Matlab语音情感识别

情感识别基于matlab GUI SVM语音情感识别(带面板)含Matlab源码 876期

检查Java中的MySQL DB中是不是存在值?

检查用户是不是可以在提到的频道 discord.js 中发送消息

将消息从服​​务器发送到 Android 应用程序

discord py - 在多个服务器上删除具有相同内容的消息(原始删除)