我想做一个不和谐的黑名单机器人读取消息,但我不能让他读取消息
问题描述:
我想做一个不和谐的机器人黑名单某些单词,为此,我试图首先阅读发送的消息一个用户,并检查该邮件中的单词是否被列入黑名单,然后删除该邮件,但我不知道如何让机器人读取邮件我想做一个不和谐的黑名单机器人读取消息,但我不能让他读取消息
答
要阅读邮件,需要将回调函数分配给MessageRecieved事件Discord.net为您提供。
public class Program {
public static DiscordClient client;
static void Main(string[] args) {
// Create a discord client
client = new DiscordClient(x => {
x.AppName = "Your App Name";
x.AppUrl = "";
x.MessageCacheSize = 0;
x.UsePermissionsCache = true;
x.EnablePreUpdateEvents = true;
x.LogLevel = LogSeverity.Debug;
x.LogHandler = OnLogMessage;
});
// Assign a callback to the MessageRecieved event on client
client.MessageReceived += OnMessageRecieved;
}
// Our MessageRecieved callback
public static void OnMessageRecieved(object sender, MessageEventArgs args) {
// Your code to handle messages here, the message string can be accessed by args.Message.Text
}
}
+0
谢谢你有点帮助,但我无法弄清楚如何检查邮件是否被列入黑名单,如果它是删除它。我得到,我必须写我想要做的与消息在括号内,但我可以不要用同一句话来告诉它在一个人写的命令中应该做什么,所以如果你能再帮我一次,我会非常感激。 – ComxT
答
好了,所以我做了,现在我有这个
public static async void OnMessageReceived(object sender, MessageEventArgs e)
{
if (e.Message.Text.Contains(toBlacklist.ToString()))
{
Message[] blacklistedMessagesToDelete;
blacklistedMessagesToDelete = await e.Channel.DownloadMessages(1);
await e.Channel.DeleteMessages(blacklistedMessagesToDelete);
}
}
但toBlacklist是在它与多个字的数组,如果我没有在引号字符串传递,而不是它,它不会删除该邮件
答
一些很容易马虎的代码,但它应该工作
public static async void OnMessageReceived(object sender, MessageEventArgs e)
{
bool found = false; //temporary bool, most likely unneeded
foreach (var word in toBlacklist)
{
if (e.Message.RawText.ToLower().Contains(word.ToLower()))
{
found = true;
}
}
if (found)
{
await e.Message.Delete();
}
}
问“我从哪里开始”的问题通常太宽泛,并不适合本网站。人们有自己的方法来解决这个问题,正因为如此,没有一个正确的答案。请仔细阅读[**从哪里开始**](https://softwareengineering.meta.stackexchange.com/questions/6366/where-to-start/6367#6367),然后解决您的文章。 – rene