You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中排除Twitch聊天里以!开头的命令消息?

解决Twitch ChatGPT集成中排除!开头消息的问题

你的代码核心问题是混淆了「消息内容」和「发送消息的用户名」的判断逻辑,同时对消息的处理存在疏漏,导致!开头的命令消息没被正确过滤。下面是修正后的完整方案:

问题分析

  1. 你定义的excludeGptReply是要排除的用户名列表,但原代码里却拿「消息内容」去和这个列表做比对,这完全是逻辑错误,根本没起到过滤指定用户的作用。
  2. 对!开头消息的判断没有处理消息前后空格的情况,比如用户输入 !command这种带前置空格的消息,StartsWith("!")会返回false,导致没被过滤。

修正后的代码

首先,你需要先获取发送当前消息的用户名(通常Twitch聊天事件的参数里会包含用户名,比如args["username"],具体字段名根据你用的Twitch SDK调整),然后结合消息内容做判断:

// 定义要排除的用户名列表(保持你的原有配置)
List<string> excludeGptReply = new List<string>();
excludeGptReply.Add(chatbotName);
excludeGptReply.Add(broadcaster);
excludeGptReply.Add("streamelements");
excludeGptReply.Add("nightbot");
excludeGptReply.Add("streamlabs");
excludeGptReply.Add("pokemoncommunitygame");
excludeGptReply.Add("kofistreambot");
excludeGptReply.Add("fourthwallhq");
excludeGptReply.Add("fossabot");

// 获取发送消息的用户名和消息内容
string username = args["username"].ToString().ToLower();
string message = args["message"].ToString().Trim();

// 先判断用户是否在排除列表,再判断消息是否以!开头
if (excludeGptReply.Contains(username) || message.StartsWith("!"))
{
    return true; // 跳过处理,不回复
}

关键修改点

  • 区分用户名和消息内容:用username去匹配排除列表,而不是拿消息内容去比对,这样才能正确跳过指定用户的所有消息。
  • 处理消息空格:对消息内容先执行Trim(),去掉前后空格,避免带空格的命令消息漏过滤。
  • 合并判断逻辑:用||(逻辑或)把两个条件合并,只要满足其中一个就跳过,代码更简洁。

内容的提问来源于stack exchange,提问作者Duby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 03:42:44