コード例 #1
0
            public static async Task RouteSystemMsg(UpdateEventArgs e)
            {
                // copy update so easier to call
                Update Upd  = e.Update;
                User   Self = await Vars.BotInstance.GetMeAsync();

                foreach (User Usr in e.Update.Message.NewChatMembers)
                {
                    Log("Processing incoming update (SysRoute), ID: " + Upd.Id + ", user: "******" " + Usr.LastName + ", UID: " + Usr.Id, "BOT");
                    if (Usr == Self)
                    {
                        goto SkipFor; // skip bot itself
                    }
                    // check user
                    Settings.User DBUser = DB.GetUserByID(Upd.Message.From.Id);
                    if (DBUser == null || DBUser.Verified != true)
                    {
                        // the user is not verified
                        // perform action
                        Log("User not verified, performing action...", "BOT");
                        if (Vars.CurrentSettings.KickUnverified)
                        {
                            await Vars.BotInstance.KickChatMemberAsync(Upd.Message.Chat.Id, Usr.Id, DateTime.UtcNow.AddSeconds(60));

                            Log("Kicked user for 1 minute.", "BOT");
                        }
                        else
                        {
                            await Vars.BotInstance.RestrictChatMemberAsync(Upd.Message.Chat.Id, Usr.Id, DateTime.UtcNow, false, false, false, false);

                            Settings.Message Msg = new Settings.Message();
                            Msg.ChatID    = Upd.Message.Chat.Id;
                            Msg.MessageID = Upd.Message.MessageId;
                            DBUser.Messages.Add(Msg);
                            Log("Limited user permanently.", "BOT");
                        }
                    }
                    SkipFor :;
                }
            }
コード例 #2
0
            public static async Task RouteUserMsg(object Sender, UpdateEventArgs e)
            {
                // copy update so easier to call
                Update Upd = e.Update;
                User   Usr = e.Update.Message.From;

                Log("Processing incoming update (UserRoute), ID: " + Upd.Id + ", user: "******" " + Usr.LastName + ", UID: " + Usr.Id, "BOT");
                if (Upd.Message.Chat.Type != ChatType.Private)
                {
                    return;
                }
                // check if user exists
                Settings.User DBUser = DB.GetUserByID(Upd.Message.From.Id);
                if (DBUser == null)
                {
                    // the user does not exist!
                    // create user
                    Log("Adding unfamiliar user to database...", "BOT");
                    DBUser = new Settings.User(Usr.Id);
                    Vars.CurrentSettings.Users.Add(DBUser);
                    Log("Done, currently we have " + Vars.CurrentSettings.Users.Count + " users on record.");
                    // continue
                }
                if (DBUser.Verified)
                {
                    // user has already passed verification
                    Log("User already passed verification.", "BOT");
                    await Vars.BotInstance.SendTextMessageAsync(Usr.Id, "💤 Your account is already verified!", ParseMode.Markdown);

                    return;
                }
                // user hasn't passed verification yet
                await Vars.BotInstance.SendTextMessageAsync(Usr.Id, "🔒 *Verification*\n\nWelcome!\n\nTo verify that you're not a robot, visit the page below.\n\n"
                                                            + Vars.CurrentSettings.ServerURL + "landing?g=" + DBUser.GUID.ToString(),
                                                            ParseMode.Markdown);
            }