Advertisement
osdever

TekashiBot

May 22nd, 2020
1,839
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.79 KB | None | 0 0
  1.        public void Run()
  2.         {
  3.             var s = api.Groups.GetLongPollServer(groupId);
  4.             while (true)
  5.             {
  6.                 var poll = api.Groups.GetBotsLongPollHistory(
  7.                         new BotsLongPollHistoryParams()
  8.                         { Server = s.Server, Ts = s.Ts, Key = s.Key, Wait = 1 });
  9.                 if (poll?.Updates == null) continue;
  10.                 foreach (var upd in poll.Updates)
  11.                 {
  12.                     if (upd.MessageNew == null)
  13.                         continue;
  14.  
  15.                     if (upd.MessageNew.Message.Action != null)
  16.                     {
  17.                         if (upd.MessageNew.Message.Action.Type == MessageAction.ChatInviteUser || upd.MessageNew.Message.Action.Type == MessageAction.ChatInviteUserByLink)
  18.                         {
  19.                             if (upd.MessageNew.Message.Action.MemberId.Value == -(long)groupId)
  20.                             {
  21.                                 api.Messages.Send(
  22.                                 new MessagesSendParams
  23.                                 {
  24.                                     PeerId = upd.MessageNew.Message.PeerId.Value,
  25.                                     RandomId = _rand.Next(),
  26.                                     Message = @"Привет! Я Таноши, и я делюсь аниме картинками. Для разблокировки всех моих возможностей сделай меня админом :з
  27. По-умолчанию я рассылаю картинки раз в 30 минут, но изменить это можно командой 'тб интер <периодичность>'
  28. Помощь по боту - vk.com/@tanoshibot-help",
  29.                                     Attachments = new List<MediaAttachment> { new GayArticle() }
  30.                                 }
  31.                                 );
  32.                                 continue;
  33.                             }
  34.                             else
  35.                             {
  36.                                 api.Messages.Send(
  37.                                 new MessagesSendParams
  38.                                 {
  39.                                     PeerId = upd.MessageNew.Message.PeerId.Value,
  40.                                     RandomId = _rand.Next(),
  41.                                     Message = @"Привет! Я Таноши, и я делюсь аниме картинками.
  42. Помощь по боту - vk.com/@tanoshibot-help",
  43.                                     Attachments = new List<MediaAttachment> { new GayArticle() }
  44.                                 }
  45.                                 );
  46.                                 continue;
  47.                             }
  48.                         }
  49.                     }
  50.  
  51.                     string text = upd.MessageNew.Message.Text;
  52.                     OnUserMessage(upd.MessageNew.Message.PeerId, upd.MessageNew.Message.FromId, text);
  53.                     string[] args = text.Split(' ');
  54.                     var chat = GetChatData(upd.MessageNew.Message.PeerId.Value);
  55.                     chat.MessagesTotal++;
  56.                     chat.CharactersTotal += text.Length;
  57.  
  58.                     if (!prefixes.Contains(args[0].ToLower()))
  59.                         continue;
  60.  
  61.                     string cmd = args[1].ToLower();
  62.                     if (args.Count() < 2)
  63.                         continue;
  64.  
  65.                     string[] picCommands = { "p", "п", "пик", "пикча", "картинка", "аниме", "pic", "picture" };
  66.                     string[] statCommands = { "s", "с", "стат", "стата", "статистика", "stat", "statistic" };
  67.                     string[] gstatCommands = { "гс", "глобалстата", "юзерстата", "глобал", "globalstat", "userstat", "gs" };
  68.                     string[] intervCommands = { "i", "и", "интервал", "интер", "период", "periodicity", "period", "interval", "inter" };
  69.  
  70.                     bool commandSent = true;
  71.                     if (picCommands.Contains(cmd))
  72.                         SendRandomPictureTo(upd.MessageNew.Message.PeerId);
  73.                     else if (statCommands.Contains(cmd))
  74.                         SendStatsTo(upd.MessageNew.Message.PeerId, upd.MessageNew.Message.FromId);
  75.                     else if (gstatCommands.Contains(cmd))
  76.                         SendGStatsTo(upd.MessageNew.Message.PeerId, upd.MessageNew.Message.FromId);
  77.                     else if (intervCommands.Contains(cmd) && args.Count() > 2)
  78.                         SetIntervalInChat(upd.MessageNew.Message.PeerId, upd.MessageNew.Message.FromId, uint.Parse(args[2]));
  79.                     else if (cmd == "статчат" || cmd == "сч")
  80.                         SendChatStatsTo(upd.MessageNew.Message.PeerId, upd.MessageNew.Message.FromId);
  81.                     else if (cmd == "админ")
  82.                         SendAdminTo(upd.MessageNew.Message.PeerId, upd.MessageNew.Message.FromId);
  83.                     else if (cmd == "кик")
  84.                     {
  85.                         if (args.Count() > 2)
  86.                         {
  87.                             try
  88.                             {
  89.                                 ProcessKick(upd.MessageNew.Message.PeerId, long.Parse(GetInt(args[2].Substring(3))), upd.MessageNew.Message.FromId);
  90.                             } catch(Exception)
  91.                             {
  92.                                 var spl = args[2].Split('/');
  93.                                 ProcessKick(upd.MessageNew.Message.PeerId, api.Utils.ResolveScreenName(spl[spl.Count()-1]).Id, upd.MessageNew.Message.FromId);
  94.                             }
  95.                         }
  96.                         else
  97.                         {
  98.                             if (upd.MessageNew.Message.ReplyMessage.Id.HasValue)
  99.                             {
  100.                                 ProcessKick(upd.MessageNew.Message.PeerId, upd.MessageNew.Message.ReplyMessage.FromId, upd.MessageNew.Message.FromId);
  101.                             }
  102.                             else
  103.                             {
  104.                                 api.Messages.Send(
  105.                                 new MessagesSendParams
  106.                                 {
  107.                                     PeerId = upd.MessageNew.Message.PeerId.Value,
  108.                                     RandomId = _rand.Next(),
  109.                                     Message = @"Укажите кого нужно кикнуть"
  110.                                 }
  111.                                 );
  112.                             }
  113.                         }
  114.                     }
  115.                     else if(cmd == "инфо")
  116.                     {
  117.                         api.Messages.Send(
  118.                                 new MessagesSendParams
  119.                                 {
  120.                                     PeerId = upd.MessageNew.Message.PeerId,
  121.                                     RandomId = _rand.Next(),
  122.                                     Message = $"[Информация]\n" +
  123.                                     $"Бесед с Таноши: {Database.Chats.Count()}\n" +
  124.                                     $"Юзеров, написавших хоть раз: {Database.Users.Count() / 2}",
  125.                                     Attachments = new List<MediaAttachment> { new GayArticle() }
  126.                                 }
  127.                                 );
  128.  
  129.                         foreach (var u in Database.Users)
  130.                         {
  131.                             Console.WriteLine($"{u.VkID} - {u.LastMessage} - {u.CharactersTotal}");
  132.                         }
  133.                     }
  134.                     else
  135.                         commandSent = false;
  136.  
  137.                     Console.WriteLine(commandSent);
  138.  
  139.                     var user = GetUserData(upd.MessageNew.Message.FromId.Value);
  140.                     var userl = GetLocalUserData(upd.MessageNew.Message.FromId.Value, upd.MessageNew.Message.PeerId.Value);
  141.                     if (commandSent)
  142.                     {
  143.                         user.CommandsTotal++;
  144.                         userl.CommandsTotal++;
  145.                         chat.CommandsTotal++;
  146.                         Database.SaveChanges();
  147.                     }
  148.                     else
  149.                     {
  150.                         api.Messages.Send(
  151.                         new MessagesSendParams
  152.                         {
  153.                             PeerId = upd.MessageNew.Message.PeerId.Value,
  154.                             RandomId = _rand.Next(),
  155.                             Message = @"Прости, я тебя не понял.
  156. Мои команды - vk.com/@tanoshibot-help"
  157.                         }
  158.                         );
  159.                     }
  160.                 }
  161.                 s.Ts = poll.Ts;
  162.             }
  163.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement