예제 #1
0
        /// <summary>
        /// Вызывает команду
        /// </summary>
        /// <param name="message">принимает сообщение</param>
        /// <param name="client">Ссылка на экземпляр бота</param>
        public async void Execute(Message message, TelegramBotClient client)
        {
            var chatId    = message.Chat.Id;
            var messageId = message.MessageId;

            //reply кнопки
            var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
            {
                Keyboard = new[] {
                    new[] // row 1
                    {
                        new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("Чпоньк"),
                        new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("Жамк"),
                    },
                },
                ResizeKeyboard = true
            };
            await client.SendTextMessageAsync(chatId, "Жамкни внизу!", replyMarkup : keyboard);

            // обработка reply кнопок
            //client.OnUpdate += async (object sender, Telegram.Bot.Args.UpdateEventArgs evu) =>
            //{
            if (message.Text == "Чпоньк")
            {
                await client.SendTextMessageAsync(message.Chat.Id, "Ты нажал на первую кнопку!", replyToMessageId : message.MessageId);
            }
            if (message.Text == "Жамк")
            {
                await client.SendTextMessageAsync(message.Chat.Id, "Ты нажал на вторую кнопку!", replyToMessageId : message.MessageId);
            }
            //};
        }
        internal override async Task Execute(Message message, TelegramBotClient botClient)
        {
            var keyboardButtons = new []
            {
                new [] // row 1
                {
                    //column 1
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("🔬 Анализы"),
                    //column 2
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("🚑 Первая помощь")
                }
            };

            var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(keyboardButtons)
            {
                ResizeKeyboard = true
            };
            var chatId   = message.Chat.Id;
            var userName = message.From.FirstName;

            string botStartMessage         = $" 🏥 Добро пожаловать, *{userName}*! \nЯ помогу Вам найти информацию о самых популярных лабораторных анализах, подскажу, что делать в экстренных случаях и многое другое!";
            string botStartKeyboardMessage = "Что вас интересует?";

            await botClient.SendPhotoAsync(chatId, "https://github.com/OnofreichukRoman/MedicalTelegrammBot/blob/master/Images/start.jpg?raw=true", botStartMessage, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown);

            await botClient.SendTextMessageAsync(message.Chat.Id, botStartKeyboardMessage, replyMarkup : keyboard);
        }
예제 #3
0
 /// <summary>
 /// Зарегистрировать студента в списке
 /// </summary>
 /// <param name="msg">Сообщение</param>
 public void registerCommand(Message msg)
 {
     Storage.Student student = db.Students.Where(a => a.UserID == msg.From.Id).FirstOrDefault();
     if (student != null)
     {
         client.SendTextMessageAsync(msg.Chat.Id, string.Format("{0}, вы уже зарегистрированы, ваш E-mail: {1}. Для редактирования профиля используется команда /profile", msg.From.FirstName, student.EMail));
     }
     else
     {
         // Кнопка для регистрации с запросом номера телефона
         KeyboardButton b = new KeyboardButton("Отправить телефон")
         {
             RequestContact = true
         };
         // Панель кнопок
         KeyboardButton[] keys = new KeyboardButton[1] {
             b
         };
         // Разметка ответа
         var markup = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(keys, true, true);
         client.SendTextMessageAsync(msg.Chat.Id, "Для регистрации отправьте мне телефон и после него E-mail", replyMarkup: markup);
         // Переход в состояние регистрации пользователя
         SetState(msg.From.Id, BotState.Registration);
         state[msg.From.Id].PhoneNumber = null;
     }
 }
예제 #4
0
        public Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup GetKeyboard(string[][] buttons)
        {
            int rows = buttons.Length;

            Telegram.Bot.Types.ReplyMarkups.KeyboardButton[][] keyboardButtons = new Telegram.Bot.Types.ReplyMarkups.KeyboardButton[rows][];

            for (int row = 0; row < rows; row++)
            {
                keyboardButtons[row] = new Telegram.Bot.Types.ReplyMarkups.KeyboardButton[buttons[row].Length];

                for (int column = 0; column < buttons[row].Length; column++)
                {
                    keyboardButtons[row][column] = buttons[row][column];
                }
            }



            var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
            {
                Keyboard       = keyboardButtons,
                ResizeKeyboard = true
            };

            return(keyboard);
        }
예제 #5
0
 private void SendOneMessage(long id, String s, Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup keyboardMarkup)
 {
     try
     {
         bot.SendTextMessageAsync(id, s, Telegram.Bot.Types.Enums.ParseMode.Default, true, false, 0, keyboardMarkup);
     }
     catch (Telegram.Bot.Exceptions.ApiRequestException ex) { SendMessagToMaster(ex.ToString()); }
 }
 private void SendOneMessage(long id, String s, Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup keyboardMarkup)
 {
     try
     {
         bot.SendTextMessageAsync(id, s, true, true, 0, keyboardMarkup, Telegram.Bot.Types.Enums.ParseMode.Html);
     }
     catch (Telegram.Bot.Exceptions.ApiRequestException ex) { }
 }
예제 #7
0
        // static List<string> curr = new List<string>();

        public static async void getCurency()
        {
            // Обязательно! убираем старую привязку к вебхуку для бота

            try
            {
                var updates = await bot.GetUpdatesAsync(offset); // получаем массив обновлений

                foreach (var update in updates)                  // Перебираем все обновления
                {
                    if (update != null && update.Message.Text != null)
                    {
                        if (update.Message.Text.ToString() == "/saycur")
                        {
                            Market m = KunaExplorer.GetTicker("btcuah").Result;
                            SendMes("btcuah: " + m.ticker.last + " ");
                        }
                        if (update.Message.Text.ToString() == "/nanopoolpr")
                        {
                            NanopoolPrice m = NanopoolExplorer.ETNNanopoolPrice("etnjzKFU6ogESSKRZZbdqraPdcKVxEC17Cm1Xvbyy76PARQMmgrgceH4krAH6xmjKwJ3HtSAKuyFm1BBWYqtchtq9tBap8Qr4M.3372294e90bbf9e0159556d0058c528b19d179906fdce413357dd4905caee9b7").Result;
                            SendMes("btc_etn: " + m.data.price_btc + "\r\n " + "btc_etn: " + m.data.price_usd);
                        }

                        if (update.Message.Text.ToString() == "/but")
                        {
                            var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                            {
                                Keyboard = new[] {
                                    new[]             // row 1
                                    {
                                        new Telegram.Bot.Types.KeyboardButton("Накатим!"),
                                        new Telegram.Bot.Types.KeyboardButton("Рря!")
                                    },
                                },
                                ResizeKeyboard = true
                            };

                            await bot.SendTextMessageAsync(chatId, "Давай накатим, товарищ, мой!", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboard);
                        }
                        if (update.Message.Text.ToString() == "/delkeyb")
                        {
                            var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardRemove();
                            await bot.SendTextMessageAsync(chatId, "клавиатура отключена", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboard);
                        }
                    }


                    offset = update.Id + 1;
                }
            }

            catch (Telegram.Bot.Exceptions.ApiRequestException ex)
            {
                //Console.WriteLine(ex.Message); // если ключ не подошел - пишем об этом в консоль отладки
            }
        }
예제 #8
0
        public static Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup ButtonCreator1(List <string> performer)
        {
            int rowsCount = performer.Count;

            Telegram.Bot.Types.KeyboardButton[][] buttons = new Telegram.Bot.Types.KeyboardButton[rowsCount][];
            for (int i = 0; i < rowsCount; i++)
            {
                buttons[i]    = new Telegram.Bot.Types.KeyboardButton[1];
                buttons[i][0] = "\U0001F464" + performer[i];
            }
            Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup result = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(buttons);
            result.OneTimeKeyboard = true;
            return(result);
        }
예제 #9
0
        public static Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup ButtonCreator(string[] lst)
        {
            int rowsCount = lst.Length;

            Telegram.Bot.Types.KeyboardButton[][] buttons = new Telegram.Bot.Types.KeyboardButton[rowsCount][];
            for (int i = 0; i < rowsCount; i++)
            {
                buttons[i]    = new Telegram.Bot.Types.KeyboardButton[1];
                buttons[i][0] = lst[i];
            }
            Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup result = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(buttons);
            result.OneTimeKeyboard = true;
            return(result);
        }
예제 #10
0
        public override void Execute(Message message, TelegramBotClient client)
        {
            var chatId    = message.Chat.Id;
            var messageId = message.MessageId;

            var rkm = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
            {
                Keyboard = new[] {
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton[] {
                        "В начало",
                    }
                }
            };



            client.SendTextMessageAsync(chatId, "Telegram bot railgun-2000", replyToMessageId: messageId, replyMarkup: rkm);
        }
예제 #11
0
        /// <summary>
        /// Отметить присутствие студента на занятии
        /// </summary>
        /// <param name="msg">Сообщение</param>
        public void checkinCommand(Message msg)
        {
            // Кнопка для регистрации
            KeyboardButton b = new KeyboardButton("Отметиться")
            {
                RequestLocation = true
            };

            // Панель кнопок
            KeyboardButton[] keys = new KeyboardButton[1] {
                b
            };
            // Разметка ответа
            var markup = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(keys, true, true);

            // Ответ
            client.SendTextMessageAsync(msg.Chat.Id, "Предоставьте регистрационные данные", replyMarkup: markup);
        }
예제 #12
0
        public override async Task Execute(Message message, TelegramBotClient botClient, Client person)
        {
            try
            {
                var button = new Telegram.Bot.Types.ReplyMarkups.KeyboardButton();
                button.RequestContact = true;
                button.Text           = "Поделиться контактом";
                var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(button);
                keyboard.ResizeKeyboard  = true;
                keyboard.OneTimeKeyboard = true;

                await botClient.SendTextMessageAsync(message.Chat.Id, PhoneMessage.Message, replyMarkup : keyboard, parseMode : Telegram.Bot.Types.Enums.ParseMode.Html);
            }
            catch (Exception ex)
            {
                Bot.MyLogger(ex.Message);
                Bot.MyLogger(ex.StackTrace);
            }
        }
예제 #13
0
        /// <summary>
        /// Команда /start
        /// </summary>
        /// <param name="m"></param>
        public void StartCommand(Telegram.Bot.Types.Message m)
        {
            // Поиск пользователя по идентификатору
            var u = state.Users?.FirstOrDefault(a => a.ID == m.From.Id);

            // Проверяем, что пользователь полностью зарегистрирован
            if ((u != null) && u.IsFull)
            {
                // Пользователь уже есть в базе
                // Ответ пользователю
                client.SendTextMessageAsync(m.Chat.Id, $"Привет, {m.From.FirstName}, с возвращением!");
            }
            else // Обнаружен новый пользователь
            {
                // Ответ пользователю
                var button = new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("Телефон")
                {
                    RequestContact = true
                };
                var kbd = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(button);
                kbd.OneTimeKeyboard = true;
                kbd.ResizeKeyboard  = true;

                client.SendTextMessageAsync(m.From.Id, $"Привет, {m.From.FirstName}, рад знакомству!", replyMarkup: kbd);

                // Создание нового пользователя
                if (u == null)
                {
                    u = new User()
                    {
                        ID        = m.From.Id,
                        UserName  = m.From.Username,
                        FirstName = m.From.FirstName,
                        LastName  = m.From.LastName,
                    };
                    state.AddUser(u);
                }
                // Переход в состояние ожидания номера телефона
                u.State = UserState.Contact;
                // Сохранить состояние бота
                state.Save(stateFileName);
            }
        }
예제 #14
0
        public override void Execute(Message message, TelegramBotClient client)
        {
            var chatId = message.Chat.Id;
            var messageId = message.MessageId;

            var rkm = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
            {
                Keyboard = new[] {
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton[]{
                            "Машина",
                            "Помощь"
                    }
                }
            };
            //TODO: Command logic -_-



            client.SendTextMessageAsync(chatId, "Допбро пожаловать в магазин Ролика Дениса!\n Пожалуйста выбирите раздел", replyToMessageId: messageId,replyMarkup: rkm );
        }
예제 #15
0
        internal override async Task Execute(Message message, TelegramBotClient botClient)
        {
            var keyboardButtons = new[]
            {
                new [] // row 1
                {
                    //column 1
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("🔙 На главную"),
                    //column 2
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("🔬 Общий анализ крови")
                },
                new [] // row 2
                {
                    //column 1
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("🔬 Общий анализ мочи")
                }
            };
            var inlineKeyboardSearchButton = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[][]
            {
                // row 1
                new []
                {
                    // column 1
                    Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("🔍 Поиск")
                }
            };

            var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(keyboardButtons)
            {
                ResizeKeyboard = true
            };
            var inlineKeyboardSearch = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(inlineKeyboardSearchButton);
            var chatId = message.Chat.Id;

            string botMessage       = "Выберете интересующий Вас анализ: ↕️";
            string botSearchMessage = "Или воспользуйтесь кнопкой поиска по другим анализам и показателям";

            await botClient.SendTextMessageAsync(chatId, botMessage, replyToMessageId : message.MessageId, replyMarkup : keyboard);

            await botClient.SendTextMessageAsync(chatId, botSearchMessage, replyMarkup : inlineKeyboardSearch);
        }
예제 #16
0
        public static Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup ButtonOBJEee(List <Data> listkamel)
        {
            int rowsCount = listkamel.Count;

            if (rowsCount < 70)
            {
                Telegram.Bot.Types.KeyboardButton[][] buttons = new Telegram.Bot.Types.KeyboardButton[rowsCount][];
                int i = 0;
                foreach (KeyValuePair <string, int> pair in listkamel)
                {
                    buttons[i]    = new Telegram.Bot.Types.KeyboardButton[1];
                    buttons[i][0] = pair.Key;
                    i++;
                    if (i > rowsCount - 1)
                    {
                        break;
                    }
                }
                Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup result = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(buttons);
                result.OneTimeKeyboard = true;
                return(result);
            }
            else
            {
                Telegram.Bot.Types.KeyboardButton[][] buttons = new Telegram.Bot.Types.KeyboardButton[70][];
                int i = 0;
                foreach (KeyValuePair <string, int> pair in listkamel)
                {
                    buttons[i]    = new Telegram.Bot.Types.KeyboardButton[1];
                    buttons[i][0] = pair.Key;
                    i++;
                    if (i > 69)
                    {
                        break;
                    }
                }
                Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup result = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(buttons);
                result.OneTimeKeyboard = true;
                return(result);
            }
        }
        public static Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup createReplyKeyboard(List <SchemaStep> possibleSteps)
        {
            var buttonsRow = new List <Telegram.Bot.Types.ReplyMarkups.KeyboardButton>();

            foreach (var t in possibleSteps)
            {
                buttonsRow.Add(new Telegram.Bot.Types.ReplyMarkups.KeyboardButton(t.Transition.DisplayName));
            }

            var replyKeyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup()
            {
                OneTimeKeyboard = true,
                ResizeKeyboard  = true
            };

            replyKeyboard.Keyboard = new List <List <Telegram.Bot.Types.ReplyMarkups.KeyboardButton> >()
            {
                buttonsRow
            };
            return(replyKeyboard);
        }
예제 #18
0
 private Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup GetAbilitiesKeyboard()
 {
     Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup keyboard = new
                                                                    Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup();
     keyboard.ResizeKeyboard = true;
     keyboard.Keyboard       = new Telegram.Bot.Types.KeyboardButton[][]
     {
         new Telegram.Bot.Types.KeyboardButton[]
         {
             new Telegram.Bot.Types.KeyboardButton("1"),
             new Telegram.Bot.Types.KeyboardButton("2"),
             new Telegram.Bot.Types.KeyboardButton("3")
         },
         new Telegram.Bot.Types.KeyboardButton[]
         {
             new Telegram.Bot.Types.KeyboardButton("4"),
             new Telegram.Bot.Types.KeyboardButton("5"),
         }
     };
     return(keyboard);
 }
예제 #19
0
        public static async void ReceiveMessage(int Id)
        {
            await YourBot.Bot.SendTextMessageAsync(Id, "О, нужна помощь! Давай-ка решим, чем я могу тебе помочь...");

            var button = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup();

            button.Keyboard =
                new KeyboardButton[][]
            {
                new KeyboardButton[]
                {
                    new KeyboardButton("Калькулятор"),
                    new KeyboardButton("Погода")
                },
                new KeyboardButton[]
                {
                    new KeyboardButton("Курс валют")
                }
            };
            await YourBot.Bot.SendTextMessageAsync(Id, "Выбери, чем тебе помочь:", replyMarkup : button);
        }
예제 #20
0
        public override void Execute(Message message, TelegramBotClient client)
        {
            var chatId    = message.Chat.Id;
            var messageId = message.MessageId;

            //var payment = new LabeledPrice {
            //    Label = "Товар",
            //    //Amount = ;
            //};

            var rkm = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
            {
                Keyboard = new[] {
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton[] {
                        "В начало",
                    }
                }
            };


            //TODO: Command logic -_-

            MailAddress from = new MailAddress("*****@*****.**", "Tom");
            MailAddress to   = new MailAddress("*****@*****.**");

            MailMessage m = new MailMessage(from, to);

            m.Subject    = "Ну типо тут заказ";
            m.Body       = "<h2>Письмо-тест работы smtp-клиента</h2>";
            m.IsBodyHtml = true;
            SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);

            smtp.Credentials = new NetworkCredential("*****@*****.**", "Den30623322");
            smtp.EnableSsl   = true;
            smtp.Send(m);


            //client.SendInvoiceAsync(chatId, "Спасибо за оплату", replyToMessageId: messageId, replyMarkup: rkm);
            client.SendTextMessageAsync(chatId, "Спасибо за оплату", replyToMessageId: messageId, replyMarkup: rkm);
        }
예제 #21
0
        internal override async Task Execute(Message message, TelegramBotClient botClient)
        {
            var keyboardButtons = new[]
            {
                new [] // row 1
                {
                    //column 1
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("🧾 Показатели анализа крови"),
                },
                new [] // row 2
                {
                    //column 1
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("🔙 Назад к анализам")
                }
            };
            var inlineKeyboardSearchButton = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[][]
            {
                // row 1
                new []
                {
                    // column 1
                    Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("🔍 Поиск")
                }
            };

            var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(keyboardButtons)
            {
                ResizeKeyboard = true
            };
            var inlineKeyboardSearch = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(inlineKeyboardSearchButton);
            var chatId = message.Chat.Id;

            string botMessage       = "#Общийанализкрови #ОАК \n🔬🩸 *Общий анализ крови (ОАК)* – это наиболее доступный метод первичной оценки состояния организма, результаты которого, наряду с общим анализом мочи и биохимическим анализом крови, входят в алгоритмы диагностики большинства заболеваний. У здорового человека кровь по своему составу относительно постоянна, но   реагирует практически на любые патологические изменения в организме. Поэтому, чтобы понять, что происходит с человеком, какие исследования назначить в дальнейшем или определиться с лечением, врач, в первую очередь, всегда назначает ОАК. \nЭто исследование также используется в виде профилактического обследования даже при отсутствии каких-либо симптомов и отражает изменения состояния здоровья. Кроме того, ОАК позволяет оценить успешность проведенного лечения.";
            string botSearchMessage = "Не нашли то что искали? Воспользуйтесь кнопкой поиска по другим анализам и показателям";

            await botClient.SendPhotoAsync(chatId, "https://raw.githubusercontent.com/OnofreichukRoman/MedicalTelegrammBot/master/Images/bloodanalysis.jpg", botMessage, replyToMessageId : message.MessageId, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown, replyMarkup : keyboard);

            await botClient.SendTextMessageAsync(chatId, botSearchMessage, replyMarkup : inlineKeyboardSearch);
        }
예제 #22
0
        public static Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup ButtonCreatorObjecti(List <string> filename, List <string> performer)
        {
            int rowsCount = filename.Count;

            Telegram.Bot.Types.KeyboardButton[][] buttons = new Telegram.Bot.Types.KeyboardButton[rowsCount][];
            for (int i = 0; i < rowsCount; i++)
            {
                if (filename[i] != "")
                {
                    buttons[i]    = new Telegram.Bot.Types.KeyboardButton[1];
                    buttons[i][0] = "\U0001F3B5" + filename[i] + "\U0001F464" + performer[i];
                }
                else
                {
                    buttons[i]    = new Telegram.Bot.Types.KeyboardButton[1];
                    buttons[i][0] = "\U0001F464" + performer[i];
                }
            }
            Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup result = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(buttons);
            result.OneTimeKeyboard = true;
            return(result);
        }
예제 #23
0
        public override BotMessage BuildMsg()
        {
            UnitList = UnitsFunction.UnitsList();

            UnitBtn = new Telegram.Bot.Types.KeyboardButton[UnitList.Count][];

            int count = 0;

            base.TextMessage = "1";

            foreach (var unit in UnitList)
            {
                UnitBtn[count]    = new Telegram.Bot.Types.KeyboardButton[1];
                UnitBtn[count][0] = new Telegram.Bot.Types.KeyboardButton("Еденица измерения:" + unit.Name);
                count++;
            }

            Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup replyKeyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(UnitBtn);

            base.MessageReplyMarkup = replyKeyboard;

            return(this);
        }
예제 #24
0
        public override void Execute(Message message, TelegramBotClient client)
        {
            var chatId    = message.Chat.Id;
            var messageId = message.MessageId;
            var rkm       = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup {
            };

            string connectionString = @"Data Source=localhost\MSSQLSERVER01;Initial Catalog=RolikBot;Integrated Security=True";
            string sql = "SELECT * FROM Categories";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();
                // Создаем объект DataAdapter
                SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
                // Создаем объект Dataset
                DataSet ds = new DataSet();
                // Заполняем Dataset
                adapter.Fill(ds);

                var reply = new Telegram.Bot.Types.ReplyMarkups.KeyboardButton[ds.Tables[0].Rows.Count];
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    reply[i] = ds.Tables[0].Rows[i][1].ToString();
                }

                rkm = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                {
                    Keyboard = new[] { reply }
                };
            }



            client.SendTextMessageAsync(chatId, "Выберите категорию", replyToMessageId: messageId, replyMarkup: rkm);
        }
예제 #25
0
        private static async void OnMessageHandler(object sender, Telegram.Bot.Args.MessageEventArgs e)
        {
            var text   = e.Message.Text;
            var userId = e.Message.Chat.Id;

            if (text == null)
            {
                return;
            }
            try
            {
                //logging messages
                File.AppendAllText(logPath, $"{userId}({e.Message.Chat.FirstName} {e.Message.Chat.LastName}): {text}, {e.Message.Date}\n");
            }
            catch
            {
                File.AppendAllText(logPath, $"{userId}({e.Message.Chat.FirstName}): {text}, {e.Message.Date}\n");
            }
            Console.WriteLine($"User {userId}({e.Message.Chat.FirstName}) sent {text}");
            if (!states.ContainsKey(userId))
            {
                states.Add(userId, State.CommandReciever);
            }

            if (!tempEvents.ContainsKey(userId))
            {
                tempEvents[userId] = new Tuple <Event, int>(new Event(), 0);
            }
            switch (states[userId])
            {
            case State.CommandReciever:
                switch (text)
                {
                case "/start":
                    Send(userId, "This bot helps you to plan your businesses!\n" +
                         "Press /add to start planning!\nPress /help to read more about commands");
                    break;

                case "/help":
                    Send(userId, "This bot helps you to plan your businesses!\n" +
                         "/add adds new plan" +
                         "\n/show shows all records\n" +
                         "/mark then choose a bussiness to mark it done\n" +
                         "/delay then choose a different time for your business\n" +
                         "/remove then choose a record to remove\n" +
                         "(You'll receive notifications and daily statistics)");
                    break;

                case "/show":
                    if (!planner.Contains(userId) || planner.Get(userId).Count() == 0)
                    {
                        Send(userId, "You have no plans!");
                    }
                    else
                    {
                        var    plans = planner.Get(userId);
                        string res   = $"You have planned {plans.Count()} things!\n";
                        for (int i = 0; i < plans.Count(); ++i)
                        {
                            res += $"{i + 1}. {plans[i].name} {plans[i].time} {plans[i].importance}\n";
                        }
                        Send(userId, res);
                    }
                    break;

                case "/add":
                    states[userId] = State.AddName;
                    Send(userId, "Type business name");
                    break;

                case "/mark":
                    states[userId] = State.MarkName;
                    var userEventsMarkName = planner.Get(userId);
                    List <List <Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton> > listMarkName = new List <List <Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton> >();
                    for (int i = 0; i < userEventsMarkName.Count(); ++i)
                    {
                        string cur        = $"{userEventsMarkName[i].name} {userEventsMarkName[i].time} {userEventsMarkName[i].importance}";
                        var    addingList = new List <Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton>
                        {
                            Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData($"{cur}", $"{i}")
                        };
                        listMarkName.Add(addingList);
                    }
                    var markupMarkName = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(listMarkName);
                    try
                    {
                        await bot.SendTextMessageAsync(userId, "Choose a deal you want to mark:", replyMarkup : markupMarkName);
                    }
                    catch
                    {
                        Console.WriteLine($"Error: forbidden user {userId}");
                        planner.DeleteUser(userId);
                        states.Remove(userId);
                        tempEvents.Remove(userId);
                        break;
                    }
                    break;

                case "/delay":
                    states[userId] = State.DelayName;
                    var userEvnts = planner.Get(userId);
                    List <List <Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton> > listDelay = new List <List <Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton> >();
                    for (int i = 0; i < userEvnts.Count(); ++i)
                    {
                        string cur        = $"{userEvnts[i].name} {userEvnts[i].time} {userEvnts[i].importance}";
                        var    addingList = new List <Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton>
                        {
                            Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData($"{cur}", $"{i}")
                        };
                        listDelay.Add(addingList);
                    }
                    var markupDelay = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(listDelay);
                    try
                    {
                        await bot.SendTextMessageAsync(userId, "Choose a deal you want to delay:", replyMarkup : markupDelay);
                    }
                    catch
                    {
                        Console.WriteLine($"Error: forbidden user {userId}");
                        planner.DeleteUser(userId);
                        states.Remove(userId);
                        tempEvents.Remove(userId);
                        break;
                    }
                    break;

                case "/remove":
                    states[userId] = State.RemoveName;
                    var usrEvnts = planner.Get(userId);
                    List <List <Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton> > listRemove = new List <List <Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton> >();
                    for (int i = 0; i < usrEvnts.Count(); ++i)
                    {
                        string cur        = $"{usrEvnts[i].name} {usrEvnts[i].time} {usrEvnts[i].importance}";
                        var    addingList = new List <Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton>
                        {
                            Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton.WithCallbackData($"{cur}", $"{i}")
                        };
                        listRemove.Add(addingList);
                    }
                    var markupRemove = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(listRemove);
                    try
                    {
                        await bot.SendTextMessageAsync(userId, "Choose a deal you want to delay:", replyMarkup : markupRemove);
                    }
                    catch
                    {
                        Console.WriteLine($"Error: forbidden user {userId}");
                        planner.DeleteUser(userId);
                        states.Remove(userId);
                        tempEvents.Remove(userId);
                        break;
                    }
                    break;

                default:
                    Send(userId, "Enter a proper command! Type /help to get more info");
                    break;
                }
                break;

            case State.AddName:
                tempEvents[userId].Item1.name = text;
                if (tempEvents[userId].Item1.name == "")
                {
                    Send(userId, "Enter non empty name!");
                }
                else
                {
                    var TimeMarkup = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(new[]
                    {
                        new []
                        {
                            new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("Today"),
                            new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("Tomorrow"),
                            new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("No Term")
                        }
                    })
                    {
                        OneTimeKeyboard = true
                    };
                    try
                    {
                        await bot.SendTextMessageAsync(userId, "Choose Time below!", replyMarkup : TimeMarkup);
                    }
                    catch
                    {
                        Console.WriteLine($"Error: forbidden user {userId}");
                        planner.DeleteUser(userId);
                        states.Remove(userId);
                        tempEvents.Remove(userId);
                        break;
                    }
                }
                states[userId] = State.AddTime;
                break;

            case State.AddTime:
                switch (text)
                {
                case "Today":
                    tempEvents[userId].Item1.time = Time.Today;
                    break;

                case "Tomorrow":
                    tempEvents[userId].Item1.time = Time.Tomorrow;
                    break;

                case "No Term":
                    tempEvents[userId].Item1.time = Time.NoTerm;
                    break;

                default:
                    Send(userId, "Push the buttons!");
                    return;
                }
                var ImpMarkup = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(new[]
                {
                    new[]
                    {
                        new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("Important"),
                        new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("Medium"),
                        new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("Casual")
                    }
                })
                {
                    OneTimeKeyboard = true
                };
                try
                {
                    await bot.SendTextMessageAsync(userId, "Choose importance below!", replyMarkup : ImpMarkup);
                }
                catch
                {
                    Console.WriteLine($"Error: forbidden user {userId}");
                    planner.DeleteUser(userId);
                    states.Remove(userId);
                    tempEvents.Remove(userId);
                    break;
                }
                states[userId] = State.AddImportance;
                break;

            case State.AddImportance:
                switch (text)
                {
                case "Important":
                    tempEvents[userId].Item1.importance = Importance.Important;
                    break;

                case "Medium":
                    tempEvents[userId].Item1.importance = Importance.Medium;
                    break;

                case "Casual":
                    tempEvents[userId].Item1.importance = Importance.Casual;
                    break;

                default:
                    Send(userId, "Push the buttons!");
                    return;
                }
                tempEvents[userId].Item1.owner = userId;
                planner.Add(userId, new Event(tempEvents[userId].Item1.name, tempEvents[userId].Item1.time, tempEvents[userId].Item1.importance, tempEvents[userId].Item1.owner));
                tempEvents[userId] = new Tuple <Event, int>(new Event(), 0);

                var markup = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardRemove();
                try
                {
                    await bot.SendTextMessageAsync(e.Message.Chat.Id, "Record added!", replyMarkup : markup);
                }
                catch
                {
                    Console.WriteLine($"Error: forbidden user {userId}");
                    planner.DeleteUser(userId);
                    states.Remove(userId);
                    tempEvents.Remove(userId);
                    break;
                }
                states[userId] = State.CommandReciever;
                break;

            case State.MarkDone:
                switch (text)
                {
                case "Done":
                    tempEvents[userId].Item1.done = true;
                    break;

                case "Not done":
                    tempEvents[userId].Item1.done = false;
                    break;

                default:
                    Send(userId, "Push the buttons!");
                    return;
                }
                var markupMarkDone = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardRemove();
                try
                {
                    await bot.SendTextMessageAsync(e.Message.Chat.Id, $"State was successfully changed!", replyMarkup : markupMarkDone);
                }
                catch
                {
                    Console.WriteLine($"Error: forbidden user {userId}");
                    planner.DeleteUser(userId);
                    states.Remove(userId);
                    tempEvents.Remove(userId);
                    break;
                }
                planner.Mark(e.Message.Chat.Id, tempEvents[userId].Item2, tempEvents[userId].Item1.done);
                tempEvents[userId] = new Tuple <Event, int>(new Event(), 0);
                states[userId]     = State.CommandReciever;
                break;

            case State.DelayTime:
                switch (text)
                {
                case "Today":
                    tempEvents[userId].Item1.time = Time.Today;
                    break;

                case "Tomorrow":
                    tempEvents[userId].Item1.time = Time.Tomorrow;
                    break;

                case "No Term":
                    tempEvents[userId].Item1.time = Time.NoTerm;
                    break;

                default:
                    Send(userId, "Push the buttons!");
                    return;
                }
                var markupDelayTime = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardRemove();
                try
                {
                    await bot.SendTextMessageAsync(userId, $"Changes saved!", replyMarkup : markupDelayTime);
                }
                catch
                {
                    Console.WriteLine($"Error: forbidden user {userId}");
                    planner.DeleteUser(userId);
                    states.Remove(userId);
                    tempEvents.Remove(userId);
                    break;
                }
                planner.Delay(userId, tempEvents[userId].Item2, tempEvents[userId].Item1.time);
                tempEvents[userId] = new Tuple <Event, int>(new Event(), 0);
                states[userId]     = State.CommandReciever;
                break;

            default:
                tempEvents[userId] = new Tuple <Event, int>(new Event(), 0);
                //Send(userId, "Something went wrong! Code: Message");
                Send(userId, "Try to push the buttons! Try again");
                states[userId] = State.CommandReciever;
                return;
            }
        }
예제 #26
0
        private static async void OnCallbackQueryHandler(object sender, Telegram.Bot.Args.CallbackQueryEventArgs e)
        {
            var userId = e.CallbackQuery.Message.Chat.Id;

            try
            {
                var a = states[userId];
            }
            catch (Exception)
            {
                return;
            }
            Tuple <Event, int> tempEvent;

            switch (states[userId])
            {
            case State.MarkName:
                int curEvent = Int16.Parse(e.CallbackQuery.Data);
                tempEvent          = new Tuple <Event, int>(new Event(planner.Get(e.CallbackQuery.Message.Chat.Id)[curEvent]), curEvent);
                tempEvents[userId] = tempEvent;
                var markup = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(new[]
                {
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("Done"),
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("Not done")
                });
                try
                {
                    await bot.SendTextMessageAsync(userId, "Choose state", replyMarkup : markup);
                }
                catch
                {
                    Console.WriteLine($"Error: forbidden user {userId}");
                    planner.DeleteUser(userId);
                    states.Remove(userId);
                    tempEvents.Remove(userId);
                    break;
                }
                states[userId] = State.MarkDone;
                break;

            case State.DelayName:
                int curEventDelayName = Int16.Parse(e.CallbackQuery.Data);
                tempEvent          = new Tuple <Event, int>(new Event(planner.Get(e.CallbackQuery.Message.Chat.Id)[curEventDelayName]), curEventDelayName);
                tempEvents[userId] = tempEvent;
                var markupDelayName = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(new[]
                {
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("Today"),
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("Tomorrow"),
                    new Telegram.Bot.Types.ReplyMarkups.KeyboardButton("No Term")
                });
                try
                {
                    await bot.SendTextMessageAsync(e.CallbackQuery.Message.Chat.Id, "Choose state", replyMarkup : markupDelayName);
                }
                catch
                {
                    Console.WriteLine($"Error: forbidden user {userId}");
                    planner.DeleteUser(userId);
                    states.Remove(userId);
                    tempEvents.Remove(userId);
                    break;
                }
                states[userId] = State.DelayTime;
                break;

            case State.RemoveName:
                int curEventRemoveName = Int16.Parse(e.CallbackQuery.Data);
                planner.Remove(userId, curEventRemoveName);
                Send(userId, "Record was removed!");
                states[userId] = State.CommandReciever;
                break;
                //default:
                //    Send(userId, "Something went wrong! Code: Callback");
                //    break;
            }
        }
예제 #27
0
        async void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            var worker = sender as BackgroundWorker;
            var key    = e.Argument as String; // получаем ключ из аргументов

            try
            {
                var Bot = new Telegram.Bot.TelegramBotClient(key); // инициализируем API
                await Bot.SetWebhookAsync("");                     // Обязательно! убираем старую привязку к вебхуку для бота

                // Inlin'ы
                Bot.OnInlineQuery += async(object si, Telegram.Bot.Args.InlineQueryEventArgs ei) =>
                {
                    var query = ei.InlineQuery.Query;

                    var msg = new Telegram.Bot.Types.InputMessageContents.InputTextMessageContent
                    {
                        MessageText = @"Это супер крутой текст статьи
с переносами
и <b>html</b> <i>тегами!</i>",
                        ParseMode   = Telegram.Bot.Types.Enums.ParseMode.Html,
                    };

                    Telegram.Bot.Types.InlineQueryResults.InlineQueryResult[] results =
                    {
                        new Telegram.Bot.Types.InlineQueryResults.InlineQueryResultArticle
                        {
                            Id                  = "1",
                            Title               = "Тестовый тайтл",
                            Description         = "Описание статьи тут",
                            InputMessageContent = msg,
                        },
                        new Telegram.Bot.Types.InlineQueryResults.InlineQueryResultAudio
                        {
                            Url    = "http://aftamat4ik.ru/wp-content/uploads/2017/05/mongol-shuudan_-_kozyr-nash-mandat.mp3",
                            Id     = "2",
                            FileId = "123423433",
                            Title  = "Монгол Шуудан - Козырь наш Мандат!",
                        },
                        new Telegram.Bot.Types.InlineQueryResults.InlineQueryResultPhoto
                        {
                            Id          = "3",
                            Url         = "http://aftamat4ik.ru/wp-content/uploads/2017/05/14277366494961.jpg",
                            ThumbUrl    = "http://aftamat4ik.ru/wp-content/uploads/2017/05/14277366494961-150x150.jpg",
                            Caption     = "Текст под фоткой",
                            Description = "Описание",
                        },
                        new Telegram.Bot.Types.InlineQueryResults.InlineQueryResultVideo
                        {
                            Id       = "4",
                            Url      = "http://aftamat4ik.ru/wp-content/uploads/2017/05/bb.mp4",
                            ThumbUrl = "http://aftamat4ik.ru/wp-content/uploads/2017/05/joker_5-150x150.jpg",
                            Title    = "демо видеоролика",
                            MimeType = "video/mp4",
                        }
                    };


                    await Bot.AnswerInlineQueryAsync(ei.InlineQuery.Id, results);
                };

                // Callback'и от кнопок
                Bot.OnCallbackQuery += async(object sc, Telegram.Bot.Args.CallbackQueryEventArgs ev) =>
                {
                    var message = ev.CallbackQuery.Message;
                    if (ev.CallbackQuery.Data == "callback1")
                    {
                        await Bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id, "You hav choosen " + ev.CallbackQuery.Data, true);
                    }
                    else
                    if (ev.CallbackQuery.Data == "callback2")
                    {
                        await Bot.SendTextMessageAsync(message.Chat.Id, "тест", replyToMessageId : message.MessageId);

                        await Bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id); // отсылаем пустое, чтобы убрать "частики" на кнопке
                    }
                };

                Bot.OnUpdate += async(object su, Telegram.Bot.Args.UpdateEventArgs evu) =>
                {
                    if (evu.Update.CallbackQuery != null || evu.Update.InlineQuery != null)
                    {
                        return;                                                                     // в этом блоке нам келлбэки и инлайны не нужны
                    }
                    var update  = evu.Update;
                    var message = update.Message;
                    if (message == null)
                    {
                        return;
                    }
                    if (message.Type == Telegram.Bot.Types.Enums.MessageType.TextMessage)
                    {
                        if (message.Text == "/hello")
                        {
                            // в ответ на команду /saysomething выводим сообщение
                            await Bot.SendTextMessageAsync(message.Chat.Id, "Ну здарова! Как сам? :)", replyToMessageId : message.MessageId);
                        }
                        if (message.Text == "/help")
                        {
                            string txt = "Сори, я сам тут новенький :)\n /help - помощь\n /hello - поздароваться\n /getimg - получи картинку\n /rbuttons - Reply - кнопки\n /ibuttons - Inline кнопки";
                            // в ответ на команду /saysomething выводим сообщение
                            await Bot.SendTextMessageAsync(message.Chat.Id, txt, replyToMessageId : message.MessageId);
                        }
                        if (message.Text == "/getimg")
                        {
                            // в ответ на команду /getimage выводим картинку
                            await Bot.SendPhotoAsync(message.Chat.Id, "http://aftamat4ik.ru/wp-content/uploads/2017/03/photo_2016-12-13_23-21-07.jpg", "Revolution!");
                        }

                        // inline buttons
                        if (message.Text == "/ibuttons")
                        {
                            var keyboard = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(
                                new Telegram.Bot.Types.InlineKeyboardButton[][]
                            {
                                // First row
                                new [] {
                                    // First column
                                    new Telegram.Bot.Types.InlineKeyboardButton("раз", "callback1"),

                                    // Second column
                                    new Telegram.Bot.Types.InlineKeyboardButton("два", "callback2"),
                                },
                            }
                                );

                            await Bot.SendTextMessageAsync(message.Chat.Id, "Давай накатим, товарищ, по одной!", false, false, 0, keyboard, Telegram.Bot.Types.Enums.ParseMode.Default);
                        }

                        // reply buttons
                        if (message.Text == "/rbuttons")
                        {
                            var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                            {
                                Keyboard = new[] {
                                    new[]             // row 1
                                    {
                                        new Telegram.Bot.Types.KeyboardButton("Накатим!"),
                                        new Telegram.Bot.Types.KeyboardButton("Рря!")
                                    },
                                },
                                ResizeKeyboard = true
                            };

                            await Bot.SendTextMessageAsync(message.Chat.Id, "Давай накатим, товарищ, мой!", false, false, 0, keyboard, Telegram.Bot.Types.Enums.ParseMode.Default);
                        }
                        // обработка reply кнопок
                        if (message.Text.ToLower() == "накатим!")
                        {
                            await Bot.SendTextMessageAsync(message.Chat.Id, "Ну, за здоровье!", replyToMessageId : message.MessageId);
                        }
                        if (message.Text.ToLower() == "рря!")
                        {
                            await Bot.SendTextMessageAsync(message.Chat.Id, "Ну, за демократию!", replyToMessageId : message.MessageId);
                        }
                    }
                };

                // запускаем прием обновлений
                Bot.StartReceiving();
            }
            catch (Telegram.Bot.Exceptions.ApiRequestException ex)
            {
                Console.WriteLine(ex.Message); // если ключ не подошел - пишем об этом в консоль отладки
            }
        }
예제 #28
0
        async void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            /*Commands.Add("/start");
             * Commands.Add("/balance");
             * Commands.Add("/chatID");
             * Commands.Add("/ОРЁЛ");
             * Commands.Add("/РЕШКА");
             * Commands.Add("/0,2");
             * Commands.Add("/0,4");
             * Commands.Add("/0,6");
             * Commands.Add("/0,8");*/

            var worker = sender as BackgroundWorker;
            var key    = "400994008:AAF_AngoYyaakmuAhsv63kSR_fXkO6NA8ek"; // получаем ключ из аргументов

            bool   rate = false;
            int    rateCount; //ОРЁЛ - 1 :РЕШКА - 2.
            int    randomizeCount;
            Random rand = new Random();

            try
            {
                var Bot = new Telegram.Bot.TelegramBotClient(key); // инициализируем API
                await Bot.SetWebhookAsync("");

                //Bot.SetWebhook(""); // Обязательно! убираем старую привязку к вебхуку для бота
                int offset = 0; // отступ по сообщениям
                while (true)
                {
                    var updates = await Bot.GetUpdatesAsync(offset); // получаем массив обновлений

                    foreach (var update in updates)                  // Перебираем все обновления
                    {
                        var message = update.Message;

                        chatID = message.Chat.Id;

                        const string connStr = "server=localhost;user=root;database=bot_1;password = 000000;";

                        MySqlConnection conn = new MySqlConnection(connStr);

                        conn.Open();

                        string blnc = "SELECT balance FROM bot_1.user where id = " + chatID;

                        MySqlCommand commandCheckBalance = new MySqlCommand(blnc, conn);

                        balance = (float)Convert.ToDouble(commandCheckBalance.ExecuteScalar());
                        conn.Clone();

                        if (message.Type == Telegram.Bot.Types.Enums.MessageType.TextMessage)
                        {
                            /*for (int i = 0; i < 9;i++)
                             * {
                             *      if (message.Text.Substring(0, 1) != Commands[i])
                             * {
                             *  await Bot.SendTextMessageAsync(message.Chat.Id, "Я тебя не понимаю..	Напиши /start !");
                             * }
                             * }*/



                            if (message.Text == "/start")
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "Начнём💸	"+
                                                               "\r\n\r\nДля начала я даю тебе " + startBonus.ToString() + " рублей." +
                                                               "\r\nА благодаря этому боту можно влёгкую поднять денег!👑 " +
                                                               "\r\nВсеголишь угадывая монету. " +
                                                               "\r\nПрямо сейчас можешь начать зарабатывать!");

                                // reply buttons
                                var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                                {
                                    Keyboard = new[] {
                                        new[]         // row 1
                                        {
                                            new Telegram.Bot.Types.KeyboardButton("/0,2"),
                                            new Telegram.Bot.Types.KeyboardButton("/0,4"),
                                            new Telegram.Bot.Types.KeyboardButton("/0,6"),
                                            new Telegram.Bot.Types.KeyboardButton("/0,8")
                                        },
                                    },
                                    ResizeKeyboard = true
                                };

                                await Bot.SendTextMessageAsync(message.Chat.Id, "Сделай ставку:", false, false, 0, keyboard, Telegram.Bot.Types.Enums.ParseMode.Default);
                            }

                            if (message.Text == "/0,2" || message.Text == "/0,4" || message.Text == "/0,6" || message.Text == "/0,8")
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "Ставки приняты💰");

                                var keyboard2 = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                                {
                                    Keyboard = new[] {
                                        new[]         // row 1
                                        {
                                            new Telegram.Bot.Types.KeyboardButton("/ОРЁЛ"),
                                            new Telegram.Bot.Types.KeyboardButton("/РЕШКА")
                                        },
                                    },
                                    ResizeKeyboard = true
                                };

                                await Bot.SendTextMessageAsync(message.Chat.Id, "Испытай удачу!💸", false, false, 0, keyboard2, Telegram.Bot.Types.Enums.ParseMode.Default);
                            }



                            if (message.Text == "/balance")
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "Твой баланс💸:" + balance);
                            }
                            if (message.Text == "/chatID")
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "Твой chatID:" + chatID);
                            }

                            // обработка reply кнопок
                            if (message.Text == "/ОРЁЛ")
                            {
                                rate           = true;
                                rateCount      = 1;
                                randomizeCount = rand.Next(0, 2);
                                if (randomizeCount == 0)
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Ии этооо... ОРЁЛ \r\nУгадал!😇");

                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Тебе зачислено💸:");
                                }
                                if (randomizeCount == 1)
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Ии этооо... РЕШКА \r\nНе угадал!😈");

                                    await Bot.SendTextMessageAsync(message.Chat.Id, "С чёта списано💵:");
                                }
                            }
                            if (message.Text == "/РЕШКА")
                            {
                                rate           = true;
                                rateCount      = 2;
                                randomizeCount = rand.Next(0, 2);
                                if (randomizeCount == 1)
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Ии этооо... РЕШКА \r\nУгадал!😇");

                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Тебе зачислено💸:");
                                }
                                if (randomizeCount == 0)
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Ии этооо... ОРЁЛ \r\nНе угадал!😈");

                                    await Bot.SendTextMessageAsync(message.Chat.Id, "С чёта списано💵:");
                                }
                            }
                            Bot.StartReceiving();
                        }

                        offset = update.Id + 1;
                    }
                }
            }
            catch (Telegram.Bot.Exceptions.ApiRequestException ex)
            {
                Console.WriteLine(ex.Message); // если ключ не подошел - пишем об этом в консоль отладки
            }
        }
예제 #29
0
        public AView()
        {
            keyboardHome = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
            {
                Keyboard = new[]
                {
                    new[]
                    {
                        new Telegram.Bot.Types.KeyboardButton("\U0001F482 Hero"),
                        new Telegram.Bot.Types.KeyboardButton("\U0001F528 Work \U0001F33E")
                    },
                    new[]
                    {
                        new Telegram.Bot.Types.KeyboardButton("\U0001F3F0 Town"),
                        new Telegram.Bot.Types.KeyboardButton(" Back ")
                    },
                },
                ResizeKeyboard = true
            };

            keyboardStart = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(new Telegram.Bot.Types.InlineKeyboardButton[][]
            {
                new []
                {
                    new Telegram.Bot.Types.InlineKeyboardButton("a special Person", "Person"),
                },
                new []
                {
                    new Telegram.Bot.Types.InlineKeyboardButton("a rich Gnome", "Gnome"),
                },
                new []
                {
                    new Telegram.Bot.Types.InlineKeyboardButton("a terrible Orc", "Orc"),
                },
                new []
                {
                    new Telegram.Bot.Types.InlineKeyboardButton("a strong Elf", "Elf"),
                },
            });

            keyboardLvlUp = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(new Telegram.Bot.Types.InlineKeyboardButton[][]
            {
                new []
                {
                    new Telegram.Bot.Types.InlineKeyboardButton(" Attack ", "attack"),
                    new Telegram.Bot.Types.InlineKeyboardButton(" Defence ", "def"),
                },
            });

            keyboardChouseFraction = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(new Telegram.Bot.Types.InlineKeyboardButton[][]
            {
                new []
                {
                    new Telegram.Bot.Types.InlineKeyboardButton(" Alliance ", "Alliance"),
                    new Telegram.Bot.Types.InlineKeyboardButton(" Republic ", "Republic"),
                },
            });

            createNewUser = "******" +
                            "Please visit our group to have more info. https://t.me/WWGlobalChat \n" +
                            " And chouse who you are ...";
            createNewUserEmptyUsername = "******";
            chooseStates       = "\U00002B50 Congratulation! You have become more powerful! And you stand stronger in ";
            upStatesOK         = " You feel the power!";
            upStatesFalse      = " You need to grow more...";
            chooseFraction     = "Please, chose you fraction! Brave Republic or eternal Alliance?";
            setFractionSuccses = "We knew that you would choose the best!";
            setFractionFail    = "Huston we have problems";
            errorMessage       = "Gods dont understand what do you whant to do";
        }
예제 #30
0
        private async void backgroundWorkerBot_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            try
            {
                TelegramBotClient botClient = new TelegramBotClient(token);
                await botClient.SetWebhookAsync("");

                int offset = 0;
                while (true)
                {
                    if (worker.CancellationPending == true)
                    {
                        e.Cancel = true;
                        break;
                    }
                    Update[] updates = await botClient.GetUpdatesAsync(offset);

                    foreach (Update update in updates)
                    {
                        Telegram.Bot.Types.Message message = update.Message;
                        if (message.Type == MessageType.TextMessage)
                        {
                            string answer = "Unknow command.";
                            if (checkAnswer == false)
                            {
                                switch (message.Text)
                                {
                                case "/start":
                                    answer = "Hey there! Let's start with the next word. Write /newword in the input line to start quiz.";
                                    await botClient.SendTextMessageAsync(message.Chat.Id, answer);

                                    break;

                                case "/bye":
                                    answer = "See you later!";
                                    await botClient.SendTextMessageAsync(message.Chat.Id, answer, replyMarkup : null);

                                    break;

                                case "/newword":

                                    firstIndex = rnd.Next(0, watList.Count);
                                    do
                                    {
                                        secondIndex = rnd.Next(0, watList.Count);
                                    } while (secondIndex == firstIndex);

                                    rightEnglishWord = watList[firstIndex].EnglishWord;

                                    if (rnd.Next(0, 1000) > 500)
                                    {
                                        firstWord  = watList[firstIndex].EnglishWord;
                                        secondWord = watList[secondIndex].EnglishWord;
                                    }
                                    else
                                    {
                                        firstWord  = watList[secondIndex].EnglishWord;
                                        secondWord = watList[firstIndex].EnglishWord;
                                    }

                                    var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(
                                        keyboardRow:
                                        new KeyboardButton[]
                                    {
                                        new KeyboardButton(firstWord),
                                        new KeyboardButton(secondWord)
                                    },
                                        resizeKeyboard: true
                                        );
                                    checkAnswer = true;
                                    await botClient.SendTextMessageAsync(message.Chat.Id,
                                                                         watList[firstIndex].RussianWord, replyMarkup : keyboard);

                                    break;

                                default:
                                    await botClient.SendTextMessageAsync(message.Chat.Id, answer);

                                    break;
                                }
                            }
                            else
                            {
                                if (message.Text == rightEnglishWord)
                                {
                                    answer = "Brilliant!";
                                    var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(
                                        keyboardRow:
                                        new KeyboardButton[]
                                    {
                                        new KeyboardButton("/newword"),
                                        new KeyboardButton("/bye")
                                    },
                                        resizeKeyboard: true
                                        );
                                    await botClient.SendTextMessageAsync(message.Chat.Id, answer, replyMarkup : keyboard);
                                }
                                else
                                {
                                    answer = "Sorry. Wrong answer.";
                                    var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup(
                                        keyboardRow:
                                        new KeyboardButton[]
                                    {
                                        new KeyboardButton("/newword"),
                                        new KeyboardButton("/bye")
                                    },
                                        resizeKeyboard: true
                                        );
                                    await botClient.SendTextMessageAsync(message.Chat.Id, answer, replyMarkup : keyboard);
                                }
                                checkAnswer = false;
                            }
                        }
                        offset = update.Id + 1;
                    }
                }
            }
            catch (ApiRequestException exception)
            {
                MessageBox.Show("Ошибка: " + exception.Message);
            }
        }