public void BotInit(SegasBotContext context) { //var me = Bot.GetMeAsync().Result; if (!botIsRunning) { botIsRunning = true; _context = context; Bot.OnMessage += BotOnMessageReceived; Bot.OnMessageEdited += BotOnMessageReceived; Bot.OnCallbackQuery += BotOnCallbackQueryReceived; Bot.OnReceiveError += BotOnReceiveError; Bot.StartReceiving(Array.Empty <UpdateType>()); //reactionChance = 0; //BotReaction = false; ReactionSimulator = new ReactionSimulator(DataReader, Bot); } }
private async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs) { var message = messageEventArgs.Message; string messagesText = String.Empty; string range = String.Empty; if (message == null || message.Type != MessageType.Text) { return; } if (message.Text.Contains("@SegasBot")) { messagesText = message.Text.Substring(0, message.Text.IndexOf("@SegasBot")); } else { messagesText = message.Text; } if (firstRevMode) { if (messagesText.Contains("/botClassic") || messagesText.Contains("/botclassic")) { firstRevMode = false; await Bot.SendTextMessageAsync(message.Chat.Id, $"Режим бота першої ревізії ВИКЛ"); } else { await Bot.SendTextMessageAsync(message.Chat.Id, $"{message.Text}? та пішов ти нахуй, {message.From.FirstName}!"); } return; } if (messagesText.StartsWith("/roll")) { range = messagesText.Substring(5, messagesText.Length - 5); messagesText = "/roll"; } switch (messagesText) { case "/start": await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); await Task.Delay(500); BotCommand[] commands = await Bot.GetMyCommandsAsync(); String commandsString = String.Empty; foreach (var item in commands) { commandsString += $"/{item.Command} - {item.Description}\n"; } await Bot.SendTextMessageAsync( message.Chat.Id, "Ну чьо тут, вибирай: \n\n" + commandsString); // NEW COMMAND ADDING //------------------------------------------------------------ //addNewCommandToBot(commands, "tellajoke", "ботік розказує анекдот"); //------------------------------------------------------------ break; case "/roll": await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); BotFacilities.Roll(message, range, Bot); break; case "/lolroll": await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); LolStuff.LolRoll(message, Bot); break; case "/tellajoke": await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); Joke joke = new Joke(); await Bot.SendTextMessageAsync(message.Chat.Id, joke.GetAJoke()); break; case "/weather": Forecast forecast = new Forecast(); String s = String.Empty; try { Dictionary <string, string> result = forecast.GetLvivsForecast(); if (null != result) { foreach (var item in result) { s += item.Key.ToString() + " " + item.Value.ToString() + "\n"; } await Bot.SendTextMessageAsync(message.Chat.Id, s); } } catch (Exception ex) { Error += ex.Message; } break; case "/exchange": await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); Exchange exchange = new Exchange(); String s2 = String.Empty; List <string> result2 = exchange.GetCourse(); foreach (var item in result2) { s2 += item + "\n"; } await Bot.SendTextMessageAsync(message.Chat.Id, s2); break; case "/homoofaday": await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); LolStuff.HomoOfADay(message, Bot, DataReader.GetUsers()); break; case "/heroofaday": await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); LolStuff.HeroOfADay(message, Bot, DataReader.GetUsers()); break; case "/proverbofaday": await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); LolStuff.ProverbOfADay(message, Bot, DataReader.GetProverbOfTheDay()); break; case "/botreaction": if (BotReaction) { await Bot.SendTextMessageAsync(message.Chat.Id, $"Реакція зараз включена."); } else { await Bot.SendTextMessageAsync(message.Chat.Id, $"Реакція зараз виключена."); } var inlineKeyboard = new InlineKeyboardMarkup(new[] { new [] { InlineKeyboardButton.WithCallbackData("Вкл"), InlineKeyboardButton.WithCallbackData("Викл"), }, }); await Bot.SendTextMessageAsync(message.Chat.Id, "Реакцію бота?", replyMarkup : inlineKeyboard); break; case "/botclassic": await Bot.SendTextMessageAsync(message.Chat.Id, $"Режим бота першої ревізії ВКЛ."); firstRevMode = true; break; case "/poll": await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); await Bot.SendPollAsync(message.Chat.Id, "Чьо мутимо на вихідних?", new List <String> { "Го до Паші", "Го центр", "Го центр, потім до Паші", "Го за межі Жовкви", " Маю інші справи", "Не буду в Жовкві", "Я Паша. І мене не буде." }); break; case "/everybody": case "/g": case "/all": await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); await Bot.SendTextMessageAsync(message.Chat.Id, "@Uncle_Serhii @pavlo_totskyi @silenthillph @november_sea @Far1nHate "); break; case "/info": await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); await Bot.SendTextMessageAsync(message.Chat.Id, "---------------------------------------\n" + "Admin page: shinigami302.somee.com/CRUD\n" + "Mobile API: /api/MobileApi\n" + $"FirstRevMode: {firstRevMode}\n" + $"SegasTelegramBot {BotVersion}\n" + "---------------------------------------\n"); break; default: if (BotReaction) { ReactionSimulator.SimulateReaction(message, ReactionChance); } break; } }