コード例 #1
0
 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);
     }
 }
コード例 #2
0
        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;
            }
        }