示例#1
0
        private static void ConvertSendToTG(
            Telegram.Bot.Types.Chat target,
            cqhttp.Cyan.Messages.Message message,
            string sender_nick
            )
        {
            foreach (var i in message.data)
            {
                switch (i.type)
                {
                case "text":
                    OptimisticModuleManager.SendText(target, $"[{NicknameLookup.GetCQNickname(sender_nick)}] {i.data["text"]}");
                    break;

                case "image":
                    OptimisticModuleManager.SendText(target, $"{NicknameLookup.GetCQNickname(sender_nick)}发送了图片");
                    OptimisticModuleManager.SendPhoto(target, i.data["url"]);
                    break;

                case "face":
                    OptimisticModuleManager.SendText(target, $"[{NicknameLookup.GetCQNickname(sender_nick)}] " +
                                                     $"{ConvertEmoji(Convert.ToInt32(i.data["id"]))}");
                    break;
                }
            }
        }
示例#2
0
        private async static void onMessageReceived(MessageEvent e)
        {
            (MessageType, long)endPoint = (e.messageType, getFromNum(e));
            // LOAD MOD FOR QQ GROUPS TOO!!!
            //api.RecallMessageAsync(message);
            Console.WriteLine(
                $"收到来自{e.sender.nickname}的QQ消息{e.message.raw_data_cq}"
                );
            WriteLog($"收到来自{e.sender.nickname}的QQ消息{e.message.raw_data_cq}");
            Message torep = Repeate(e.message, endPoint.Item2);

            if (torep != null)
            {
                await Config.CoolQClient.SendMessageAsync(
                    endPoint.Item1,
                    endPoint.Item2,
                    torep
                    );
            }
            string m = raw_string(e.message);

            if (e.message.raw_data_cq.Contains("[CQ:") == false)
            {
                try {
                    Message result =
                        Module_QQ.GetResult(m, e.sender.nickname);
                    if (result.data[0].type != "text" || result.data[0].data["text"] != "")
                    {
                        await Config.CoolQClient.SendMessageAsync(
                            e.messageType,
                            getFromNum (e),
                            result
                            );
                    }
                } catch { }

                try {
                    Config.lastSaid[e.sender.nickname] = e.message;
                } catch { }
                try {
                    Command com = Parser.ParseCommand(m, Config.module_ID);
                    switch (com.operation)
                    {
                    case 0:     //start_send
                        if (Config.CQsend.Contains(endPoint))
                        {
                            await Config.CoolQClient.SendTextAsync(
                                endPoint.Item1, endPoint.Item2,
                                string.Format(Config.alreadySendingMessage, "TG")
                                );

                            return;
                        }
                        Config.CQsend.Add(endPoint);
                        await Config.CoolQClient.SendTextAsync(
                            endPoint.Item1, endPoint.Item2,
                            string.Format(Config.startSendMessage, "TG")
                            );

                        return;

                    case 1:     //start_recv
                        if (Config.CQrecv.Contains(endPoint))
                        {
                            await Config.CoolQClient.SendTextAsync(
                                endPoint.Item1, endPoint.Item2,
                                string.Format(Config.alreadyRecvingMessage, "TG")
                                );

                            return;
                        }
                        Config.CQrecv.Add(endPoint);
                        await Config.CoolQClient.SendTextAsync(
                            endPoint.Item1, endPoint.Item2,
                            string.Format(Config.startRecvMessage, "TG")
                            );

                        return;

                    case 2:     //stop_send
                        if (Config.CQsend.Contains(endPoint))
                        {
                            Config.CQsend.Remove(endPoint);
                            await Config.CoolQClient.SendTextAsync(
                                endPoint.Item1, endPoint.Item2,
                                string.Format(Config.stopSendMessage, "TG")
                                );

                            return;
                        }
                        await Config.CoolQClient.SendTextAsync(
                            endPoint.Item1, endPoint.Item2,
                            string.Format(Config.notSendingMessage, "TG")
                            );

                        return;

                    case 3:     //stop_recv
                        if (Config.CQrecv.Contains(endPoint))
                        {
                            Config.CQrecv.Remove(endPoint);
                            await Config.CoolQClient.SendTextAsync(
                                endPoint.Item1, endPoint.Item2,
                                string.Format(Config.stopRecvMessage, "TG")
                                );

                            return;
                        }
                        await Config.CoolQClient.SendTextAsync(
                            endPoint.Item1, endPoint.Item2,
                            string.Format(Config.notRecvingMessage, "TG")
                            );

                        return;

                    case 4:     //send
                        try {
                            foreach (Telegram.Bot.Types.Chat i in Config.TGrecv)
                            {
                                ConvertSendToTG(i,
                                                e.message,
                                                NicknameLookup.GetCQNickname(e.sender.nickname)
                                                );
                            }
                            await Config.CoolQClient.SendTextAsync(
                                endPoint.Item1, endPoint.Item2,
                                Config.forceForwardSuccess
                                );
                        } catch (IndexOutOfRangeException) {
                            await Config.CoolQClient.SendTextAsync(
                                endPoint.Item1, endPoint.Item2,
                                Config.forceForwardFaliure
                                );
                        }
                        return;

                    case 5:     //setnick
                        if (com.parameters.Count != 2)
                        {
                            await Config.CoolQClient.SendTextAsync(
                                endPoint.Item1, endPoint.Item2,
                                Config.setNickFormatError
                                );

                            return;
                        }
                        NicknameLookup.SetTGNickname(com.parameters[0], com.parameters[1]);
                        //throw new NotImplementedException();
                        await Config.CoolQClient.SendTextAsync(
                            endPoint.Item1, endPoint.Item2,
                            Config.setNickSuccess
                            );

                        return;

                    case 6:     //getlast
                        if (com.parameters.Count != 1 || !Config.lastSaid.ContainsKey(com.parameters[0]))
                        {
                            await Config.CoolQClient.SendTextAsync(endPoint.Item1, endPoint.Item2, "爱莫能助");

                            return;
                        }
                        await Config.CoolQClient.SendTextAsync(
                            endPoint.Item1, endPoint.Item2,
                            $"{com.parameters[0]} 刚才发了:"
                            );

                        await Config.CoolQClient.SendMessageAsync(
                            endPoint.Item1, endPoint.Item2,
                            Config.lastSaid[com.parameters[0]]
                            );

                        return;
                    }
                } catch (CommandErrorException) {
                }
            }
            if (Config.CQsend.Contains(endPoint) == false)
            {
                return;
            }

            foreach (Telegram.Bot.Types.Chat i in Config.TGrecv)
            {
                ConvertSendToTG(i, e.message, e.sender.nickname);
            }
            //OptimisticModuleManager.SendText(i, $"[{NicknameLookup.GetCQNickname(message.Sender)}] {message.RawMessage}");
        }