コード例 #1
0
ファイル: SimpleTwitchClient.cs プロジェクト: casrou/ortoBot
        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);
            }
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        public void ReturnNullIfNoKeyword()
        {
            var result = ChatMessageParser.GetKeywordValue("hello everybody, i would like to change the tree", "tree:");

            Assert.Null(result);
        }
コード例 #7
0
        public void ReturnRainbowGivenCorrectKeyword()
        {
            var result = ChatMessageParser.GetKeywordValue("hello everybody, i would like the effect tree:rainbow", "tree:");

            Assert.Equal("rainbow", result);
        }
コード例 #8
0
 public ChatMessageParserShould()
 {
     _chatMessageParser = new ChatMessageParser();
 }
コード例 #9
0
ファイル: ModelConverter.cs プロジェクト: LUO12826/CodeChat
        /// <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
            });
        }