C# 尝试从单词数组中删除邮件

C# 尝试从单词数组中删除邮件,c#,discord.net,C#,Discord.net,我试图检查用户是否发布了包含黑名单字的消息,如果找到黑名单字,则删除该消息,但我无法以任何方式检查这些字。我将OnMessageReceived回调分配给MessageReceived函数。我对这个问题有点陌生,所以这可能是一个简单的答案,但在过去的两天里,我一直在努力解决这个问题 private async Task OnMessageReceived(SocketMessage msg) { for (int i = 0; i < blacklisted

我试图检查用户是否发布了包含黑名单字的消息,如果找到黑名单字,则删除该消息,但我无法以任何方式检查这些字。我将
OnMessageReceived
回调分配给
MessageReceived
函数。我对这个问题有点陌生,所以这可能是一个简单的答案,但在过去的两天里,我一直在努力解决这个问题

    private async Task OnMessageReceived(SocketMessage msg)
    {
        for (int i = 0; i < blacklistedWords.Length; i++)
        {
            if (msg.Content.Contains(blacklistedWords[i]))
            {
                Console.WriteLine(msg.Author.ToString() + " did a bad");
                await msg.Channel.DeleteMessagesAsync(); //I can't find out what to pass in here to delete the message
            }
        }
    }
OnMessageReceived的私有异步任务(SocketMessage msg)
{
for(int i=0;i
尝试创建全局重复数据结构,并将编辑的内容分配到数据结构中。即

List<SocketMessageModel > mylist = new List<SocketMessageModel >();

private async Task OnMessageReceived(SocketMessage msg)
{
    SocketMessageModel msgModel = new SocketMessageModel();
    msgModel.Content = msg.Content;
    msgModel.Author = msg.Author;
    Boolean blackListCheck = false;

    for (int i = 0; i < blacklistedWords.Length; i++)
    {
            Console.WriteLine(msg.Author.ToString() + " did a bad");
            if (msg.Content.Contains(blacklistedWords[i]))
            {
                blackListCheck = true;
                break;
            }

    }

    if (blackListCheck == false)
    {
        mylist.add(msg);
    }

}
public class SocketMessageModel
{
    public string Author {get; set; }
    public string Content {get; set; }
}
List mylist=new List();
OnMessageReceived的专用异步任务(SocketMessage消息)
{
SocketMessageModel msgModel=新的SocketMessageModel();
msgModel.Content=msg.Content;
msgModel.Author=msg.Author;
布尔黑名单检查=假;
for(int i=0;i

使用此解决方案,所有包含黑名单字的消息都将从全局数据结构中排除。然后,在解析每条消息后,您可以对存储在简单列表中的所有消息执行任何操作。

尝试创建全局重复数据结构,并将编辑的内容分配到数据结构中。即

List<SocketMessageModel > mylist = new List<SocketMessageModel >();

private async Task OnMessageReceived(SocketMessage msg)
{
    SocketMessageModel msgModel = new SocketMessageModel();
    msgModel.Content = msg.Content;
    msgModel.Author = msg.Author;
    Boolean blackListCheck = false;

    for (int i = 0; i < blacklistedWords.Length; i++)
    {
            Console.WriteLine(msg.Author.ToString() + " did a bad");
            if (msg.Content.Contains(blacklistedWords[i]))
            {
                blackListCheck = true;
                break;
            }

    }

    if (blackListCheck == false)
    {
        mylist.add(msg);
    }

}
public class SocketMessageModel
{
    public string Author {get; set; }
    public string Content {get; set; }
}
List mylist=new List();
OnMessageReceived的专用异步任务(SocketMessage消息)
{
SocketMessageModel msgModel=新的SocketMessageModel();
msgModel.Content=msg.Content;
msgModel.Author=msg.Author;
布尔黑名单检查=假;
for(int i=0;i

使用此解决方案,所有包含黑名单字的消息都将从全局数据结构中排除。然后,在解析每条消息后,您可以对存储在一个简单列表中的所有消息执行任何操作。

好的,我想出来了。我只需要先得到我要删除的消息。这是最后的代码

    private async Task OnMessageReceived(SocketMessage msg)
    {
        foreach (var word in blacklistedWords)
        {
            if (msg.Content.Contains(word))
            {
                var messagesToDelete = await msg.Channel.GetMessagesAsync(1).Flatten();
                await msg.Channel.DeleteMessagesAsync(messagesToDelete);
            }
        }
    }

好吧,我知道了。我只需要先得到我要删除的消息。这是最后的代码

    private async Task OnMessageReceived(SocketMessage msg)
    {
        foreach (var word in blacklistedWords)
        {
            if (msg.Content.Contains(word))
            {
                var messagesToDelete = await msg.Channel.GetMessagesAsync(1).Flatten();
                await msg.Channel.DeleteMessagesAsync(messagesToDelete);
            }
        }
    }

什么是行
i=blacklistedWords.Length正在执行?将
msg
传递到该函数,您不确定传递到哪个函数。这似乎只运行了一次,这使得循环毫无用处,因为在我尝试传递
msg
时,它将始终运行,但它不会只与此一起工作。我删除了
I=blacklistedWords.Lengthaswell@ComxT它仍然在我的代码中更新,忘了在这里编辑,对不起,
i=blacklistedWords.Length正在执行?将
msg
传递到该函数,您不确定传递到哪个函数。这似乎只运行了一次,这使得循环毫无用处,因为在我尝试传递
msg
时,它将始终运行,但它不会只与此一起工作。我删除了
I=blacklistedWords.Lengthaswell@ComxT它仍然在我的代码中更新,忘了在这里编辑,对不起,我需要一个用于
List mylist=new List()的using语句吗
由于缺少指令或程序集引用,因此
msg.Content
是只读的,在
Convert.ToCharacter
处,它表示Convert没有ToCharacter的定义更新以反映您的注释。研究如何在这里声明全局变量我试图做的是删除包含黑名单单词的消息,这样就不需要存储其他单词了。我不知道该怎么做,因为在我从0.9.6更新之前,我可以这样做,尽管每次我都必须传入字符串,我需要一个using语句用于
List mylist=new List()
由于缺少指令或程序集引用,因此
msg.Content
是只读的,在
Convert.ToCharacter
处,它表示Convert没有ToCharacter的定义更新以反映您的注释。研究如何在这里声明全局变量我试图做的是删除包含黑名单单词的消息,这样就不需要存储其他单词了。我不知道该怎么做,因为在我从0.9.6更新之前,我可以这样做,尽管每次我都必须传递字符串