private async void ProcessReceivedChatCommand(object sender, OnChatCommandReceivedArgs e) { if (!e.Command.ChatMessage.IsModerator && !e.Command.ChatMessage.IsBroadcaster) { return; } if (!e.Command.CommandText.ToLower().Equals("ortobot")) { return; } string message = e.Command.ChatMessage.Message.ToLower(); if (message.Contains("reset")) { ortoBot.Reset(); } else if (message.Contains("queue")) { ortoBot.ShowQueue(); } else if (message.Contains("current")) { ortoBot.ShowCurrent(); } else if (message.Contains("effects")) { ortoBot.ShowEffects(); } else if (message.Contains(settings.requestCommand)) { int bits; int.TryParse(ChatMessageParser.GetKeywordValue(message, "bits:"), out bits); if (bits <= 0) { return; } string username = ChatMessageParser.GetKeywordValue(message, "username:"******"{e.Command.ChatMessage.DisplayName} has just added an effect with the mod tool: {e.Command.ChatMessage.Message}"; Log.Information(msg); await ortoBot.TryAddBitRequestToEffectQueueAsync(obr); } }
/// <summary> /// 获取消息(特定话题) /// </summary> /// <param name="topic">话题</param> /// <param name="limit">消息条数限制</param> /// <returns>消息列表</returns> public async Task <List <ChatMessage> > GetMessages(Topic topic, int limit) { List <ChatMessage> messages = await db.GetAsync(topic, limit) as List <ChatMessage>; messages.ForEach(m => { ChatMessageParser.ParseContent(m); ChatMessageParser.ParseCode(m); }); return(messages); }
/// <summary> /// 本地搜索消息分页加载(特定话题) /// </summary> /// <param name="topic">话题</param> /// <param name="condition">搜索条件</param> /// <param name="pageIndex">页码</param> /// <param name="pageSize">页面大小</param> /// <param name="pageCount">页面数目</param> /// <returns>搜索结果</returns> public List <ChatMessage> SearchMessage(Topic topic, string condition, int pageIndex, int pageSize, ref int pageCount) { List <ChatMessage> messages = db.GetSync(topic, condition, pageIndex, pageSize, ref pageCount) as List <ChatMessage>; messages.ForEach(m => { ChatMessageParser.ParseContent(m); ChatMessageParser.ParseCode(m); }); return(messages); }
/// <summary> /// 本地搜索消息(特定话题) /// </summary> /// <param name="topic">话题</param> /// <param name="condition">搜索条件</param> /// <returns>搜索结果</returns> public async Task <List <ChatMessage> > SearchMessage(Topic topic, string condition) { List <ChatMessage> messages = await db.GetAsync(topic, condition) as List <ChatMessage>; messages.ForEach(m => { ChatMessageParser.ParseContent(m); ChatMessageParser.ParseCode(m); }); return(messages); }
private async Task <string> GetEffectFromMessageAsync(string chatMessage) { string keyword = ChatMessageParser.GetKeywordValue(chatMessage, settings.requestCommand).ToLower(); if (!settings.keywords.ContainsKey(keyword)) { return(null); } string effect = settings.keywords[keyword]; List <string> effects = await nanoleaf.GetEffectsAsync(); if (!effects.Contains(effect)) { return(null); } return(effect); }
public void ReturnNullIfNoKeyword() { var result = ChatMessageParser.GetKeywordValue("hello everybody, i would like to change the tree", "tree:"); Assert.Null(result); }
public void ReturnRainbowGivenCorrectKeyword() { var result = ChatMessageParser.GetKeywordValue("hello everybody, i would like the effect tree:rainbow", "tree:"); Assert.Equal("rainbow", result); }
public ChatMessageParserShould() { _chatMessageParser = new ChatMessageParser(); }
/// <summary> /// 将SDK的消息类型转换为界面消息类型 /// </summary> public static MessageItemBaseVM MessageToMessageVM(ChatMessage msg) { if (msg == null) { return(null); } var contact = CommunicationCore.GetContactByTopicName(msg.TopicName); bool sendByMe = !(msg.From == msg.TopicName); //判断是否为代码消息 if (msg.IsCode == true) { return(new CodeMessageVM() { Code = msg.Text, Language = GlobalFunctions.SDKcodeTypeToString(msg.CodeType), RunResult = null, ID = msg.Id, Contact = contact, SendByMe = sendByMe, RawMessage = msg }); } //判断是否为附件消息 if (msg.IsAttachment == true) { var attach = ChatMessageParser.ParseGenericAttachment(msg); //通过消息解析器获取URL列表 List <string> urls = ChatMessageParser.ParseUrl(msg, CommunicationCore.client.ApiBaseUrl); string url = urls.Count > 0 ? urls[0] : ""; string name = attach.Count > 0 ? attach[0].Name : ""; string mime = attach.Count > 0 ? attach[0].Mime : ""; //假如是以文件形式发送的图片 if (GlobalFunctions.FindPosInImageMineList(GlobalConfigs.ImageMime, mime.ToLower()) != -1) { return(new ImageMessageVM() { Contact = contact, ID = msg.Id, SendByMe = sendByMe, RawMessage = msg, ImageUri = url }); } return(new FileMessageVM() { Contact = contact, ID = msg.Id, SendByMe = sendByMe, RawMessage = msg, DownloadState = -1, FileUri = url, FileName = name, }); } //判断是否为图片消息 if (msg.IsPlainText == false) { List <string> base64s = ChatMessageParser.ParseImageBase64(msg); string base64 = base64s.Count > 0 ? base64s[0] : ""; return(new ImageMessageVM() { Contact = contact, ID = msg.Id, SendByMe = sendByMe, RawMessage = msg, ImageBase64 = base64, }); } return(new TextMessageVM() { Contact = contact, ID = msg.Id, SendByMe = sendByMe, RawMessage = msg, Text = msg.Text }); }