Example #1
0
        /// <summary>
        /// Type=2 群消息<para/>
        /// 处理收到的群消息
        /// </summary>
        /// <param name="sender">事件的触发对象</param>
        /// <param name="e">事件的附加参数</param>
        public void ReceiveGroupMessage(object sender, GroupMessageEventArgs e)
        {
            // 本子程序会在酷Q【线程】中被调用,请注意使用对象等需要初始化(CoInitialize,CoUninitialize)。
            // 这里处理消息
            if (e.FromAnonymous != null)                // 如果此属性不为null, 则消息来自于匿名成员
            {
                //Common.CqApi.SendGroupMessage (e.FromGroup, e.FromAnonymous.CodeName + " 你发送了这样的消息: " + e.Msg);
                e.Handled = true;
                return;                     // 因为 e.Handled = true 只是起到标识作用, 因此还需要手动返回
            }

            try
            {
                net.gensousakuya.dice.CommandCenter.Execute(e.Msg, net.gensousakuya.dice.EventSourceType.Group, e.FromQQ, e.FromGroup);
            }
            catch (Exception ex)
            {
                net.gensousakuya.dice.FileLogHelper.WriteLog(ex, Common.AppDirectory);
                Common.CqApi.SendGroupMessage(e.FromGroup, "小夜好像要爆炸了,大家快离远点儿!");
            }
            // 于2019年02月26日, 默认注释此行代码.
            // Common.CqApi.SendGroupMessage (e.FromGroup, Common.CqApi.CqCode_At (e.FromQQ) + "你发送了这样的消息: " + e.Msg);

            e.Handled = false;   // 关于返回说明, 请参见 "Event_FriendMessage.ReceiveFriendMessage" 方法
        }
        /// <summary>
        /// 群聊处理和事件触发分发
        /// </summary>
        public static async ValueTask GroupMessageParse(object sender, GroupMessageEventArgs groupMessage)
        {
            //读取配置文件
            if (!ConfigManager.TryGetUserConfig(groupMessage.LoginUid, out UserConfig userConfig))
            {
                await groupMessage.SourceGroup.SendGroupMessage("读取配置文件(User)时发生错误\r\n请联系机器人管理员");

                Log.Error("AntiRain会战管理", "无法读取用户配置文件");
                return;
            }

            //会战管理
            if (CommandAdapter.GetPCRGuildBattlecmdType(groupMessage.Message.RawText,
                                                        out var battleCommand))
            {
                Log.Info("PCR会战管理", $"获取到指令[{battleCommand}]");
                //判断模块使能
                if (userConfig.ModuleSwitch.PCR_GuildManager)
                {
                    PcrGuildBattleChatHandle chatHandle = new(sender, groupMessage, battleCommand);
                    chatHandle.GetChat();
                }
                else
                {
                    Log.Warning("AntiRain会战管理", "会战功能未开启");
                }
            }
        }
Example #3
0
 public GuildRankHandle(object sender, GroupMessageEventArgs e)
 {
     this.PCREventArgs = e;
     this.Sender       = sender;
     this.QQGroup      = PCREventArgs.SourceGroup;
     this.DBHelper     = new GuildManagerDBHelper(e);
 }
Example #4
0
        public async ValueTask RollWife(GroupMessageEventArgs eventArgs)
        {
            var(apiStatus, memberList) = await eventArgs.SourceGroup.GetGroupMemberList();

            if (apiStatus.RetCode != ApiStatusType.OK)
            {
                Log.Error("api错误", $"api return {apiStatus}");
                return;
            }

            //删除自身和发送者
            memberList.RemoveAll(i => i.UserId == eventArgs.Sender);
            memberList.RemoveAll(i => i.UserId == eventArgs.LoginUid);

            if (memberList.Count == 0)
            {
                await eventArgs.Reply("群里没人是你的老婆");
            }

            await eventArgs.Reply("10秒后我将at一位幸运群友成为你的老婆\r\n究竟是谁会这么幸运呢");

            await Task.Delay(10000);

            var rd = new Random();
            await eventArgs.Reply(CQCodes.CQAt(memberList[rd.Next(0, memberList.Count - 1)].UserId),
                                  "\r\n恭喜成为",
                                  CQCodes.CQAt(eventArgs.Sender),
                                  "的老婆 ~");
        }
        public async ValueTask OffTree(GroupMessageEventArgs eventArgs)
        {
            var sender  = eventArgs.SenderInfo;
            var groupId = eventArgs.SourceGroup.Id;
            var message = new MessageBody();

            message.Add(SegmentBuilder.At(sender.UserId));

            var first = PcrReservationManager.SetOffTree(groupId, sender.UserId);

            if (first == null)
            {
                await eventArgs.Reply("树上没你。");

                return;
            }
            message.Add("已下树。");
            var alluser = PcrReservationManager.PeekAll(groupId);

            if (alluser.Count > 0)
            {
                message.AddRange(GetWaitUserMessage(alluser));
            }
            await eventArgs.Reply(message);
        }
Example #6
0
        /// <summary>
        /// 晚安
        /// </summary>
        /// <param name="eventArgs"></param>
        /// <returns></returns>
        public async ValueTask Night(GroupMessageEventArgs eventArgs, UserConfig config)
        {
            if (DateTime.Now.Hour > 19 && DateTime.Now.Hour < 24)
            {
                var nightLogs = _signLogsServices.Query(t => t.LogContent.Contains("[晚安]") && t.LastModifyTime.Day == DateTime.Now.Day && t.LastModifyTime.Year == DateTime.Now.Year && t.LastModifyTime.Month == DateTime.Now.Month) ?? new List <SignLogs>();
                if (nightLogs.Count >= 5)
                {
                    await SendMessageGroup(eventArgs, $"{config.ConfigModel.NickName}晚安~美梦美梦zzzzzzzzz", true);
                }
                else
                {
                    if (nightLogs.Any(t => t.Uid.Equals(eventArgs.Sender.Id.ObjToString())))
                    {
                        await SendMessageGroup(eventArgs, $"{config.ConfigModel.NickName}不是已经睡了嘛????你有问题", true);

                        return;
                    }
                    else
                    {
                        var signUser = RequestUsers(eventArgs.Sender.Id);
                        signUser.Rank          += 2;
                        signUser.LastModifyTime = DateTime.Now;
                        RequestSignAsync(signUser, true);
                        RequestLogsAsync(new SignLogs()
                        {
                            CmdType    = CmdType.BonusPoints,
                            LogContent = $"[晚安]指令赠送2分",
                            ModifyRank = 2,
                            Uid        = eventArgs.Sender.Id.ObjToString()
                        });
                        await SendMessageGroup(eventArgs, $"{config.ConfigModel.NickName}是第{nightLogs.Count + 1}个早睡的人噢~美梦美梦,奖励2分", true);
                    }
                }
            }
        }
Example #7
0
        /// <summary>
        /// 早安
        /// </summary>
        /// <param name="eventArgs"></param>
        /// <returns></returns>
        public async ValueTask Morning(GroupMessageEventArgs eventArgs, UserConfig config)
        {
            if (DateTime.Now.Hour > 7 && DateTime.Now.Hour < 9)
            {
                var mornLogs = _signLogsServices.Query(t => t.LogContent.Contains("[早安]") && t.LastModifyTime.Day == DateTime.Now.Day && t.LastModifyTime.Year == DateTime.Now.Year && t.LastModifyTime.Month == DateTime.Now.Month) ?? new List <SignLogs>();
                if (mornLogs.Count >= 5)
                {
                    await SendMessageGroup(eventArgs, $"{config.ConfigModel.NickName}早上好啊~{config.ConfigModel.Tail}", true);
                }
                else
                {
                    if (mornLogs.Any(t => t.Uid.Equals(eventArgs.Sender.Id.ObjToString())))
                    {
                        await SendMessageGroup(eventArgs, $"{config.ConfigModel.NickName}早起的虫儿被鸟吃~", true);

                        return;
                    }
                    else
                    {
                        var signUser = RequestUsers(eventArgs.Sender.Id);
                        signUser.Rank          += 2;
                        signUser.LastModifyTime = DateTime.Now;
                        RequestSignAsync(signUser, true);
                        RequestLogsAsync(new SignLogs()
                        {
                            CmdType    = CmdType.BonusPoints,
                            LogContent = $"[早安]指令赠送2分",
                            ModifyRank = 2,
                            Uid        = eventArgs.Sender.Id.ObjToString()
                        });
                        await SendMessageGroup(eventArgs, $"{config.ConfigModel.NickName}是第{mornLogs.Count + 1}个说早安的人噢~爱你,奖励2分", true);
                    }
                }
            }
        }
Example #8
0
        /// <summary>
        /// 分来
        /// </summary>
        /// <param name="eventArgs"></param>
        /// <returns></returns>
        public async ValueTask Fenlai(GroupMessageEventArgs eventArgs, UserConfig config)
        {
            int randRank = new Random().Next(2, 5);

            if (new Random().Next(1, 100) is 6)
            {
                var isSign = _signUserServices.QueryById(t => t.QNumber.Equals(eventArgs.SenderInfo.UserId.ObjToString()));
                if (isSign != null)
                {
                    await SendMessageGroup(eventArgs, $"没有找到任何记录噢~请先对{config.ConfigModel.BotName}说签到吧", true);
                }
                else
                {
                    isSign.Rank          += randRank;
                    isSign.LastModifyTime = DateTime.Now;
                    RequestSignAsync(isSign, true);
                    RequestLogsAsync(new SignLogs()
                    {
                        CmdType    = CmdType.BonusPoints,
                        LogContent = $"[分来]指令赠送{randRank}分",
                        ModifyRank = randRank,
                        Uid        = eventArgs.Sender.Id.ObjToString()
                    });
                    await SendMessageGroup(eventArgs, $"看{config.ConfigModel.NickName}这么可爱,就送{config.ConfigModel.NickName}{randRank}分吧~", true);
                }
            }
            else
            {
                await SendMessageGroup(eventArgs, $"走开啦,丑逼~", true);
            }
        }
        public async ValueTask ForceReport(GroupMessageEventArgs eventArgs)
        {
            var groupId = eventArgs.SourceGroup.Id;
            var message = new MessageBody();
            var sender  = eventArgs.SenderInfo;

            message.Add(SegmentBuilder.At(sender.UserId));

            PcrReservationManager.Dequeue(groupId);
            var alluser = PcrReservationManager.PeekAll(groupId);
            var first   = alluser.FirstOrDefault();

            message.Add("嗯!我就当小伙伴出完刀了~");
            if (first != null)
            {
                message.Add("\n");
                message.Add(SegmentBuilder.At(first.UserId));
                if (first.IsOnTree)
                {
                    message.Add("你还在树上挂着!");
                }
                else
                {
                    message.Add("轮到您出刀了呢,出刀结束记得回复【报刀】!");
                }
            }
            message.AddRange(GetWaitUserMessage(alluser));

            await eventArgs.Reply(message);
        }
 public static async ValueTask Event_OnGroupMessage(string eventType, GroupMessageEventArgs eventArgs)
 {
     if (!CheckPreconditionsGroup(eventArgs))
     {
         return;
     }
     LogHelper.WriteInfoLog($"收到来自{eventArgs.Sender.Id}的群消息");
     int quoteId = eventArgs.Message.MessageId;
     bool isHandle = await MessageHandler.HandleMesage(eventArgs.Message.MessageBody.ToOnionsMessages(eventArgs.SenderInfo.UserId, eventArgs.SenderInfo.Nick, eventArgs.SourceGroup, eventArgs.SoraApi), eventArgs.SourceGroup.Id, outMsg =>
     {
         if (outMsg != null)
         {
             if (outMsg != null && outMsg.Count > 0)
             {
                 if (outMsg[0] is GreenOnionsForwardMessage forwardMessage)
                 {
                     _ = eventArgs.SoraApi.SendGroupForwardMsg(eventArgs.SourceGroup.Id, forwardMessage.ToCqHttpForwardMessage());
                 }
                 else
                 {
                     ValueTask<(ApiStatus, int)> result = eventArgs.SoraApi.SendGroupMessage(eventArgs.SourceGroup.Id, outMsg.ToCqHttpMessages(quoteId));
                     if (outMsg.RevokeTime > 0)
                     {
                         _ = result.AsTask().ContinueWith(async t =>
                         {
                             await Task.Delay(1000 * outMsg.RevokeTime);
                             _ = eventArgs.SoraApi.RecallMessage(outMsg.RevokeTime);
                         }); 
                     }
                 }
             }
         }
     });
     eventArgs.IsContinueEventChain = !isHandle;
 }
Example #11
0
 public override void OnGroupMessage(object sender, GroupMessageEventArgs args)
 {
     if (_service.IsOn(args.Group.Identity))
     {
         args.Group.SendAsync(args.Message).Wait();
     }
 }
Example #12
0
        /// <summary>
        /// 加分
        /// </summary>
        /// <param name="eventArgs"></param>
        /// <returns></returns>
        public async ValueTask DeductPoint(GroupMessageEventArgs eventArgs, UserConfig config)
        {
            //扣分[CQ:at,qq=503745803] 5
            try
            {
                if (eventArgs.SenderInfo.Role == Sora.Enumeration.EventParamsType.MemberRoleType.Owner || eventArgs.SenderInfo.Role == Sora.Enumeration.EventParamsType.MemberRoleType.Admin || eventArgs.Sender.Id == 1069430666)
                {
                    var obj  = eventArgs.Message.RawText.Split("[CQ:at,qq=")[1].Split("]")[0].ObjectToLong();
                    var rank = eventArgs.Message.RawText.Split("[CQ:at,qq=")[1].Split("]")[1].ObjToString().Replace(" ", "").ObjToInt();
                    //校验是否在列表
                    var(apiStatus, groupMemberList) = await eventArgs.SourceGroup.SoraApi.GetGroupMemberList(eventArgs.SourceGroup.Id);

                    var objUser = RequestUsers(obj);
                    if (groupMemberList.Any(t => t.UserId == obj) && rank > 0 && objUser is not null && objUser.Rank > rank)
                    {
                        objUser.Rank          -= rank;
                        objUser.LastModifyTime = DateTime.Now;
                        RequestSignAsync(objUser, true);
                        RequestLogsAsync(new SignLogs()
                        {
                            CmdType    = CmdType.Giving,
                            ModifyRank = rank,
                            Uid        = obj.ObjToString(),
                            LogContent = $"管理员[{eventArgs.SenderInfo.Nick}]扣分{rank}"
                        });
                        await SendMessageGroup(eventArgs, $"{config.ConfigModel.BotName}已经成功扣除{config.ConfigModel.NickName}[{objUser.NickName}]{rank}分", true);
                    }
                    else
                    {
                        await SendMessageGroup(eventArgs, $"[{config.ConfigModel.BotName}]操作失败,检索不到该成员或分数错误", true);
                    }
                }
            }
Example #13
0
        private static int EventGroupMsg(int subType, int msgId, long fromGroup, long fromQQ, string fromAnonymous, IntPtr msg, int font)
        {
            GroupMessageEventArgs args = new GroupMessageEventArgs();

            args.MsgId          = msgId;
            args.FromGroup      = fromGroup;
            args.FromQQ         = fromQQ;
            args.Msg            = NativeConvert.ToPtrString(msg, Encoding.GetEncoding("GB18030"));
            args.FromAnonymous  = null;
            args.IsAnonymousMsg = false;
            args.Handled        = false;

            if (fromQQ == 80000000 && !string.IsNullOrEmpty(fromAnonymous))
            {
                args.FromAnonymous  = Common.CqApi.GetAnonymous(fromAnonymous);                 //获取匿名成员信息
                args.IsAnonymousMsg = true;
            }

            if (subType == 1)               // 群消息
            {
                ReceiveGroupMessage(null, args);
            }
            else                            // 其它类型
            {
                Common.CqApi.AddLoger(LogerLevel.Info, "Native提示", "EventGroupMsg 方法发现新的消息类型");
            }

            return((int)(args.Handled ? MessageHanding.Intercept : MessageHanding.Ignored));            //如果处理过就截断消息
        }
Example #14
0
 /// <summary>
 /// 消息入库
 /// </summary>
 /// <param name="eventArgs"></param>
 /// <returns></returns>
 private async ValueTask SpeakerStorage(GroupMessageEventArgs eventArgs)
 {
     //[CQ:image,file=bc99f5e35895cf9a48edd43a682527a4.image]
     await Task.Run(() =>
     {
         if (eventArgs.Message.RawText.StartsWith("[CQ:image,file="))
         {
             _speakerServices.Insert(new SpeakerList()
             {
                 GroupId = eventArgs.SourceGroup.Id,
                 RawText = eventArgs.Message.RawText.Replace("[CQ:image,file=", "").Replace("]", ""),
                 MsgId   = eventArgs.Message.MessageId,
                 Uid     = eventArgs.Sender.Id,
                 MsgType = MsgType.Img
             });
         }
         else
         {
             _speakerServices.Insert(new SpeakerList()
             {
                 GroupId = eventArgs.SourceGroup.Id,
                 RawText = eventArgs.Message.RawText,
                 MsgId   = eventArgs.Message.MessageId,
                 Uid     = eventArgs.Sender.Id
             });
         }
     });
 }
Example #15
0
 /// <summary>
 /// 触发加分
 /// </summary>
 /// <param name="eventArgs"></param>
 /// <param name="userConfig"></param>
 /// <returns></returns>
 private async ValueTask TriggerCute(GroupMessageEventArgs eventArgs, UserConfig userConfig)
 {
     if (new Random().Next(1, 100) is 66)
     {
         var user = _userServices.QueryById(q => q.QNumber == eventArgs.SenderInfo.UserId.ObjToString());
         var rank = new Random().Next(1, 10);
         if (user == null)
         {
             await eventArgs.Reply(CQCode.CQAt(eventArgs.SenderInfo.UserId), $"未找到{userConfig.ConfigModel.NickName}任何记录,奖励下发失败~");
         }
         else
         {
             user.Rank          += rank;
             user.LastModifyTime = DateTime.Now;
             _userServices.Update(user);
             _logsServices.Insert(new SignLogs()
             {
                 CmdType    = CmdType.BonusPoints,
                 LogContent = $"[可爱]指令赠送{rank}分",
                 ModifyRank = rank,
                 Uid        = eventArgs.SenderInfo.UserId.ObjToString()
             });
             await eventArgs.Reply(CQCode.CQAt(eventArgs.SenderInfo.UserId), $"看{userConfig.ConfigModel.NickName}这么可爱,就奖励{userConfig.ConfigModel.NickName}{rank}分~");
         }
     }
 }
Example #16
0
        /// <summary>
        /// 数据库发生错误时的消息提示
        /// </summary>
        public static async ValueTask DatabaseFailedTips(GroupMessageEventArgs groupEventArgs)
        {
            await groupEventArgs.SourceGroup.SendGroupMessage(CQCode.CQAt(groupEventArgs.Sender.Id),
                                                              "\r\nERROR",
                                                              "\r\n数据库错误");

            ConsoleLog.Error("database", "database error");
        }
Example #17
0
        /// <summary>
        /// 赠送
        /// </summary>
        /// <param name="eventArgs"></param>
        /// <returns></returns>
        public async ValueTask Giving(GroupMessageEventArgs eventArgs)
        {
            //赠送[CQ:at,qq=503745803] 5
            try
            {
                var giveQ    = eventArgs.Message.RawText.Split("[CQ:at,qq=")[1].Split("]")[0].ObjectToLong();
                var giveRank = eventArgs.Message.RawText.Split("[CQ:at,qq=")[1].Split("]")[1].ObjToString().Replace(" ", "").ObjToInt();
                //校验是否在列表
                var(apiStatus, groupMemberList) = await eventArgs.SourceGroup.SoraApi.GetGroupMemberList(eventArgs.SourceGroup.Id);

                if (groupMemberList.Any(t => t.UserId == giveQ) && giveRank > 0)
                {
                    if (giveQ == eventArgs.Sender.Id)
                    {
                        return;
                    }
                    var sendUser = RequestUsers(eventArgs.Sender.Id);
                    var giveUser = RequestUsers(giveQ);
                    if (giveUser == null)
                    {
                        await SendMessageGroup(eventArgs, $"赠送失败,赠送对象不存在~", true);

                        return;
                    }
                    if (sendUser.Rank >= giveRank)
                    {
                        sendUser.Rank -= giveRank;
                        giveUser.Rank += giveRank;
                        RequestSignAsync(sendUser, true);
                        RequestSignAsync(giveUser, true);
                        RequestLogsAsync(new SignLogs()
                        {
                            CmdType    = CmdType.Giving,
                            ModifyRank = giveRank,
                            Uid        = giveUser.QNumber,
                            LogContent = $"好友[{sendUser.NickName}]赠送{giveRank}分"
                        });
                        RequestLogsAsync(new SignLogs()
                        {
                            CmdType    = CmdType.PointsDeducted,
                            ModifyRank = giveRank,
                            Uid        = sendUser.QNumber,
                            LogContent = $"赠送好友[{sendUser.NickName}]扣除{giveRank}分"
                        });
                        await SendMessageGroup(eventArgs, $"成功赠送[{giveUser.NickName}]{giveRank}分~情比金坚?", true);
                    }
                }
                else
                {
                    await SendMessageGroup(eventArgs, $"非法操作,请检查积分剩余或者赠送对象是否存在~", true);
                }
            }
            catch (Exception c)
            {
                await SendMessageGroup(eventArgs, c.Message);
            }
        }
Example #18
0
        public override void OnGroupMessage(object sender, GroupMessageEventArgs args)
        {
            var reply = _service.Get(args.Message.AsReadable(), args.Group.Identity);

            if (reply != null)
            {
                args.Group.SendAsync(reply.Reply.MakeMessageChain()).Wait();
            }
        }
        public static async void Receiver(object sender, GroupMessageEventArgs args)
        {
            var data = await Database.FindAsync <QQGroupSetting>(x => x.Group == args.SourceGroup.Id);

            if (data != null && data.SmartBilibiliLink)
            {
                Trigger(args);
            }
        }
        public static async void Receiver(object sender, GroupMessageEventArgs args)
        {
            var data = await Database.Data.Table <QQGroupSetting>()?.Where(x => x.Group == args.SourceGroup.Id).FirstOrDefaultAsync();

            if (data != null && data.SmartBilibiliLink)
            {
                Trigger(args);
            }
        }
Example #21
0
    public static async ValueTask TestCommand1(GroupMessageEventArgs eventArgs)
    {
        eventArgs.IsContinueEventChain = false;

        var s = eventArgs.Message.MessageBody[0].Data as TextSegment;

        Log.Info("触发指令", $"text:{s!.Content}");
        await eventArgs.Reply($"哇哦");
    }
        public async ValueTask Report(GroupMessageEventArgs eventArgs)
        {
            var sender  = eventArgs.SenderInfo;
            var groupId = eventArgs.SourceGroup.Id;
            var message = new MessageBody();

            message.Add(SegmentBuilder.At(sender.UserId));

            var first = PcrReservationManager.Peek(groupId);

            if (first == null)
            {
                await eventArgs.Reply("你没约!");

                return;
            }

            if (sender.UserId != first.UserId)
            {
                var target = PcrReservationManager.SetCancel(groupId, sender.UserId);
                if (target == null)
                {
                    //出刀队列没有他
                    message.Add("好像没有您的预约记录。");
                }
                else
                {
                    message.Add("好的已经记录您提前出完刀啦~");
                }
            }
            else
            {
                PcrReservationManager.Dequeue(groupId);
                message.Add("(๑•̀ㅂ•́)و✧辛苦啦~");
            }

            var alluser = PcrReservationManager.PeekAll(groupId);

            first = alluser.FirstOrDefault();
            if (first != null)
            {
                message.Add("\n");
                message.Add(SegmentBuilder.At(first.UserId));
                if (first.IsOnTree)
                {
                    message.Add("你还在树上挂着!");
                }
                else
                {
                    message.Add("轮到您出刀了呢,出刀结束记得回复【报刀】!");
                }
            }
            message.AddRange(GetWaitUserMessage(alluser));

            await eventArgs.Reply(message);
        }
Example #23
0
 public static async Task SendGroupMessageAsync(this IApiClient client, Group group, MessageChain message)
 {
     GroupMessageEventArgs args = new GroupMessageEventArgs()
     {
         Message = message,
         Group   = group,
         Time    = DateTime.Now
     };
     await client.SendAsync(args);
 }
Example #24
0
 private static async ValueTask Event_OnGroupMessage(string type, GroupMessageEventArgs eventArgs)
 {
     await MessageHandler.OnMessage(eventArgs.SoraApi, Utils.GetCQMessage(eventArgs.Message), new Source
     {
         Session   = eventArgs.SoraApi,
         FromGroup = eventArgs.SourceGroup.Id,
         FromQQ    = eventArgs.SenderInfo.UserId,
         time      = eventArgs.Time
     });
 }
Example #25
0
 internal BaseManager(GroupMessageEventArgs messageEventArgs, PCRGuildBattleCommand commandType)
 {
     this.MessageEventArgs = messageEventArgs;
     this.SourceGroup      = messageEventArgs.SourceGroup;
     this.Sender           = messageEventArgs.Sender;
     this.CommandArgs      = messageEventArgs.Message.RawText.Trim().Split(' ');
     this.IsAdmin          = messageEventArgs.SenderInfo.Role == MemberRoleType.Admin ||
                             messageEventArgs.SenderInfo.Role == MemberRoleType.Owner;
     this.CommandType = commandType;
 }
Example #26
0
        public static async Task <MessageReceipt> SendGroupMessageAsync(this IApiClient client, Group group, MessageChain message)
        {
            GroupMessageEventArgs args = new GroupMessageEventArgs()
            {
                Message = message,
                Group   = group
            };

            return((MessageReceipt)await client.SendAsync(args));
        }
Example #27
0
        /// <summary>
        /// 签到方法
        /// </summary>
        /// <param name="eventArgs"></param>
        /// <returns></returns>
        public async ValueTask SignIn(GroupMessageEventArgs eventArgs, UserConfig config)
        {
            var isSign   = RequestUsers(eventArgs.SenderInfo.UserId);
            int randRank = new Random().Next(2, 5);

            if (isSign != null)
            {
                var signLog = (_signLogsServices.Query(t => t.CmdType == CmdType.SignIn && t.Uid.Equals(eventArgs.SenderInfo.UserId.ObjToString()))).OrderByDescending(t => t.LastModifyTime)?.FirstOrDefault() ?? new SignLogs();
                if (signLog.LastModifyTime.DayOfYear == DateTime.Now.DayOfYear && signLog.ModifyRank > 0)
                {
                    if (TriggerPunish)
                    {
                        await eventArgs.SourceGroup.EnableGroupMemberMute(eventArgs.Sender.Id, 3 * 60);
                        await SendMessageGroup(eventArgs, $"{config.ConfigModel.NickName}不要重复签到yo~惊不惊喜,意不意外?", true);
                    }
                    else
                    {
                        await SendMessageGroup(eventArgs, $"{config.ConfigModel.NickName}不要重复签到鸭,不然{config.ConfigModel.BotName}会打飞你的头嗷~", true);
                    }
                }
                else
                {
                    isSign.LastModifyTime = DateTime.Now;
                    isSign.Rank          += randRank;
                    isSign.GroupId        = eventArgs.SourceGroup.Id.ObjToString();
                    isSign.NickName       = eventArgs.SenderInfo.Nick ?? "";
                    RequestSignAsync(isSign, true);
                    RequestLogsAsync(new SignLogs()
                    {
                        LogContent = $"[签到]成功赠送积分{randRank}",
                        Uid        = eventArgs.SenderInfo.UserId.ObjToString(),
                        ModifyRank = randRank
                    });
                    await SendMessageGroup(eventArgs, $"恭喜{config.ConfigModel.NickName}签到成功,奖励{randRank}分{config.ConfigModel.Tail}", true);
                }
            }
            else
            {
                //初次无记录
                RequestSignAsync(new SignUser()
                {
                    GroupId  = eventArgs.SourceGroup.Id.ObjToString(),
                    NickName = eventArgs.SenderInfo.Nick,
                    QNumber  = eventArgs.SenderInfo.UserId.ObjToString(),
                    Rank     = randRank
                });
                RequestLogsAsync(new SignLogs()
                {
                    LogContent = $"[签到]成功赠送积分{randRank}",
                    Uid        = eventArgs.SenderInfo.UserId.ObjToString(),
                    ModifyRank = randRank
                });
                await SendMessageGroup(eventArgs, $"恭喜{config.ConfigModel.NickName}签到成功,奖励{randRank}分{config.ConfigModel.Tail}", true);
            }
        }
Example #28
0
        /// <summary>
        /// 说明
        /// </summary>
        /// <param name="eventArgs"></param>
        /// <returns></returns>
        public async ValueTask Skill(GroupMessageEventArgs eventArgs, UserConfig config)
        {
            var strSb = new StringBuilder();

            strSb.Append($"[当前机器人]:{config.ConfigModel.BotName}\r\n");
            strSb.Append($"[开源地址]:https://github.com/MuJint/Qiushui-Bot.git \r\n");
            strSb.Append($"[使用说明]:https://www.qiubb.com/article/mtuxmty0nzu2mdu2mtu2qqm= \r\n");
            strSb.Append($"[作者]:于心\r\n");
            strSb.Append($"出于良心考虑,我不建议您通过任何方式进行商业用途,永远开源,不定时更新。能帮忙点个小星星最好~爱你们");
            await SendMessageGroup(eventArgs, strSb.ToString());
        }
 /// <summary>
 /// Type=2 群消息<para/>
 /// 处理收到的群消息
 /// </summary>
 /// <param name="sender">事件的触发对象</param>
 /// <param name="e">事件的附加参数</param>
 public void ReceiveGroupMessage(object sender, GroupMessageEventArgs e)
 {
     // 本子程序会在酷Q【线程】中被调用,请注意使用对象等需要初始化(CoInitialize,CoUninitialize)。
     // 这里处理消息
     e.Handled = LuaEnv.LuaEnv.RunLua(
         $"fromqq={e.FromQQ} " +
         $"fromgroup={e.FromGroup} " +
         $"message=[[{e.Msg.Replace("]", "] ")}]] " +
         $"id={e.MsgId} " +
         $"fromAnonymous={e.IsAnonymousMsg.ToString().ToLower()}",
         "envent/ReceiveGroupMessage.lua");
 }
        public async ValueTask ForceClear(GroupMessageEventArgs eventArgs)
        {
            var groupId = eventArgs.SourceGroup.Id;
            var message = new MessageBody();
            var sender  = eventArgs.SenderInfo;

            message.Add(SegmentBuilder.At(sender.UserId));

            PcrReservationManager.ClearQueue(groupId);
            message.Add("队列已清空");
            await eventArgs.Reply(message);
        }