// удаление администратора из базы данных static public void DelAdmins(string adminUsername, Telegram.Bot.Args.MessageEventArgs e) { if (DbWorking.AdminPresence(adminUsername) == true) { if ($"@{e.Message.Chat.Username}" != adminUsername) { if (adminUsername != "@vittalyevich") { string sqlExpression = $"DELETE FROM Admins WHERE adminUsername='******'"; SqlCommand sqlCommand = new SqlCommand(sqlExpression, connection); sqlCommand.ExecuteNonQuery(); Program.bot.SendTextMessageAsync(AddId, "Вы больше не администратор!", replyMarkup: (IReplyMarkup)Program.MenuKeyboard()); Program.bot.SendTextMessageAsync(e.Message.Chat.Id, "Успешное удаление администратора!"); } else { Program.bot.SendTextMessageAsync(e.Message.Chat.Id, "Вы не можете удалить суперадмина!"); } } else { Program.bot.SendTextMessageAsync(e.Message.Chat.Id, "Вы не можете себя удалить!"); } } else { Program.bot.SendTextMessageAsync(e.Message.Chat.Id, "Этот пользователь не является администратором!"); } }
// добавление пользователя в базу данных static public void AddUsers(Msg UserMessage, Telegram.Bot.Args.MessageEventArgs e) { if (DbWorking.CheckUser(e.Message.Chat.Id) != true) { var sql = @"INSERT INTO Users (userId, userFirstName, userUsername)" + $"VALUES({ UserMessage.id}, N'{UserMessage.firstname}', N'{ UserMessage.username}')"; SqlCommand sqlCommand = new SqlCommand(sql, connection); sqlCommand.ExecuteNonQuery(); } }
static object ViewMenu(long Id) { var replyMarkup = MenuKeyboard(); startText = "📂 Главное меню"; if (DbWorking.CheckAdmin(Id) == true) { startText = "🔐 Меню администратора"; replyMarkup = AdminMenuKeyboard(); } return(replyMarkup); }
static void Main(string[] args) { string token = System.IO.File.ReadAllText("token.txt"); bot = new TelegramBotClient(token); var me = bot.GetMeAsync().Result; Console.Title = me.Username; bot.OnMessage += Bot_OnMessage; bot.OnCallbackQuery += Bot_OnCallbackQuery; bot.StartReceiving(); Console.ReadKey(); DbWorking.Free(); bot.StopReceiving(); }
// добавление администратора в базу данных static public void AddAdmins(string adminUsername, Telegram.Bot.Args.MessageEventArgs e) { if (DbWorking.AdminPresence(adminUsername) != true) { if (DbWorking.UserPresence(adminUsername) == true) { var sql = @"INSERT INTO Admins (adminId, adminFirstName, adminUsername)" + $"VALUES({AddId}, N'{AddName}', N'{adminUsername}')"; SqlCommand sqlCommand = new SqlCommand(sql, connection); sqlCommand.ExecuteNonQuery(); FrettiBot.Program.bot.SendTextMessageAsync(AddId, "Вы назначены новым администратором!", replyMarkup: (IReplyMarkup)FrettiBot.Program.AdminMenuKeyboard()); FrettiBot.Program.bot.SendTextMessageAsync(e.Message.Chat.Id, "Успешное добавление нового администратора!"); } else { FrettiBot.Program.bot.SendTextMessageAsync(e.Message.Chat.Id, "Этого пользователя нету в нашей базе данных!"); } } else { FrettiBot.Program.bot.SendTextMessageAsync(e.Message.Chat.Id, "Этот пользователь уже является администратором!"); } }
private async static void Bot_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e) { var args = e.Message; switch (args.Text) { case "/start": { if (DbWorking.CheckUser(args.Chat.Id) == true) { var menu = ViewMenu(args.Chat.Id); await bot.SendTextMessageAsync(args.Chat.Id, $"{startText}", replyMarkup : (IReplyMarkup)menu); } else { Msg currentMsg = new Msg() { id = e.Message.Chat.Id, firstname = e.Message.Chat.FirstName, username = $"@{e.Message.Chat.Username}" }; DbWorking.AddUsers(currentMsg, e); await bot.SendTextMessageAsync( chatId : args.Chat.Id, text : "Привет, очень рад с Вами познакомиться!😎\n\nОткуда вы о нас узнали?", replyMarkup : (IReplyMarkup)AnalyticsInlineKeyboard(1)); } break; } case "👤 Фретти": { await bot.SendTextMessageAsync(args.Chat.Id, "<a href=\"https://teletype.in/@frettibot/fretti\">Подробнее</a>", ParseMode.Html); break; } case "📦 Компьютерные комплектующие": { await bot.SendTextMessageAsync( chatId : args.Chat.Id, text : "📟 Ниже Вы можете ознакомиться с компьютерными комплектующими:", replyMarkup : (IReplyMarkup)ComputerPartsKeyboard()); break; } case "✍ Написать владельцу": { await bot.SendTextMessageAsync( chatId : args.Chat.Id, text : "📝 Оцените Фретти и Ваш отзыв прямиком улетит разработчику данного бота.", replyMarkup : new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithCallbackData("😍"), InlineKeyboardButton.WithCallbackData("😏"), InlineKeyboardButton.WithCallbackData("🤬"), }, })); break; } case "🔙 Назад": { var menu = ViewMenu(args.Chat.Id); await bot.SendTextMessageAsync(args.Chat.Id, $"{startText}", replyMarkup : (IReplyMarkup)menu); ask_a_question = false; break; } case "Отмена": { price_entry = true; await bot.SendTextMessageAsync(args.Chat.Id, "📟 Ниже Вы можете ознакомиться с компьютерными комплектующими:", replyMarkup : (IReplyMarkup)ComputerPartsKeyboard()); break; } case "🚨 Отмена": // "доступ" args.text == { addAdmins = false; delAdmins = false; await bot.SendTextMessageAsync( chatId : args.Chat.Id, text : "🔇 Меню доступа", replyMarkup : new ReplyKeyboardMarkup( new KeyboardButton[][] { new KeyboardButton[] { "🕵 Список администрации" }, new KeyboardButton[] { "✅ Добавить", "❎ Удалить" }, new KeyboardButton[] { "🔙 Назад" }, }) { ResizeKeyboard = true }); break; } case "📞 Помощь": { ask_a_question = true; await bot.SendTextMessageAsync(args.Chat.Id, "Напишите нам о Вашей проблеме" + " или вопрос, ответ на который Вас интересует. Мы постараемся ответить Вам максимально быстро.", replyMarkup : new ReplyKeyboardMarkup( new KeyboardButton[][] { new KeyboardButton[] { "🔙 Назад" }, }) { ResizeKeyboard = true }); break; } case "Видеокарта": { productName = args.Text; await bot.SendTextMessageAsync( chatId : args.Chat.Id, text : "<a href=\"https://teletype.in/@frettibot/graphics_card\">Подробнее</a>", parseMode : ParseMode.Html, replyMarkup : (IReplyMarkup)ComputerPartsInlineKeyboard()); break; } case "Процессор": { productName = args.Text; await bot.SendTextMessageAsync( chatId : args.Chat.Id, text : "<a href=\"https://teletype.in/@frettibot/CPU\">Подробнее</a>", parseMode : ParseMode.Html, replyMarkup : (IReplyMarkup)ComputerPartsInlineKeyboard()); break; } case "Материнская плата": { productName = args.Text; await bot.SendTextMessageAsync( chatId : args.Chat.Id, text : "<a href=\"https://teletype.in/@frettibot/motherboard\">Подробнее</a>", parseMode : ParseMode.Html, replyMarkup : (IReplyMarkup)ComputerPartsInlineKeyboard()); break; } case "Модули оперативной памяти": { productName = args.Text; await bot.SendTextMessageAsync( chatId : args.Chat.Id, text : "<a href=\"https://teletype.in/@frettibot/RAM\">Подробнее</a>", parseMode : ParseMode.Html, replyMarkup : (IReplyMarkup)ComputerPartsInlineKeyboard()); break; } case "Дисковый накопитель": { productName = args.Text; await bot.SendTextMessageAsync( chatId : args.Chat.Id, text : "<a href=\"https://teletype.in/@frettibot/HDD\">Подробнее</a>", parseMode : ParseMode.Html, replyMarkup : (IReplyMarkup)ComputerPartsInlineKeyboard()); break; } case "Корпус": { productName = args.Text; await bot.SendTextMessageAsync( chatId : args.Chat.Id, text : "<a href=\"https://teletype.in/@frettibot/body\">Подробнее</a>", parseMode : ParseMode.Html, replyMarkup : (IReplyMarkup)ComputerPartsInlineKeyboard()); break; } case "Блок питания": { productName = args.Text; await bot.SendTextMessageAsync( chatId : args.Chat.Id, text : "<a href=\"https://teletype.in/@frettibot/Power_supply\">Подробнее</a>", parseMode : ParseMode.Html, replyMarkup : (IReplyMarkup)ComputerPartsInlineKeyboard()); break; } case "🔒 Доступ": { await bot.SendTextMessageAsync( chatId : args.Chat.Id, text : "🔇 Меню доступа", replyMarkup : new ReplyKeyboardMarkup( new KeyboardButton[][] { new KeyboardButton[] { "🕵 Список администрации" }, new KeyboardButton[] { "✅ Добавить", "❎ Удалить" }, new KeyboardButton[] { "🔙 Назад" }, }) { ResizeKeyboard = true }); break; } case "🕵 Список администрации": { DbWorking.AdminsView(e.Message.Chat.Id); break; } case "✅ Добавить": { addAdmins = true; await bot.SendTextMessageAsync(args.Chat.Id, "Введите username нового администратора:", replyMarkup : new ReplyKeyboardMarkup( new KeyboardButton[][] { new KeyboardButton[] { "🚨 Отмена" }, }) { ResizeKeyboard = true }); break; } case "❎ Удалить": { delAdmins = true; await bot.SendTextMessageAsync(args.Chat.Id, "Введите username администратора, которого хотите удалить:", replyMarkup : new ReplyKeyboardMarkup( new KeyboardButton[][] { new KeyboardButton[] { "🚨 Отмена" }, }) { ResizeKeyboard = true }); break; } case "🗂 Аналитика": { await bot.SendTextMessageAsync(args.Chat.Id, "В данном разделе представлена полная аналитика по боту", replyMarkup : new ReplyKeyboardMarkup( new KeyboardButton[][] { new KeyboardButton[] { "Пользователи" }, new KeyboardButton[] { "Формы рассылок-анкет" }, new KeyboardButton[] { "Нажатия на клавиши" }, new KeyboardButton[] { "🔙 Назад" }, }) { ResizeKeyboard = true }); break; } case "Формы рассылок-анкет": { DbWorking.ViewAnalist(e); break; } case "Нажатия на клавиши": { DbWorking.ViewClickKeyboard(e); break; } case "Пользователи": { DbWorking.ViewAmountUsers(e); break; } default: { if (answer_to_the_question == false) { DbWorking.SendAnswer(e, args.Text, messId); answer_to_the_question = true; } else if (DbWorking.CheckAdmin(args.Chat.Id) && addAdmins) { DbWorking.AddAdmins(args.Text, e); addAdmins = false; } else if (DbWorking.CheckAdmin(args.Chat.Id) && delAdmins) { DbWorking.DelAdmins(args.Text, e); delAdmins = false; } else if (ask_a_question == true) { await bot.SendTextMessageAsync(args.Chat.Id, "📂 Главное меню", replyMarkup : (IReplyMarkup)MenuKeyboard()); Msg currentMsg = new Msg() { id = args.Chat.Id, messageId = args.MessageId, text = args.Text, username = args.Chat.Username }; DbWorking.HelpAdmins(currentMsg); DbWorking.AddAnswer(currentMsg); ask_a_question = false; } else if (price_entry == false) { if (double.TryParse(e.Message.Text, out double setPrice) == true) { DbWorking.PriceComputerParts(e, setPrice, productName); } else { await bot.SendTextMessageAsync(args.Chat.Id, "Вы ввели некорректное число!"); } price_entry = true; } else { var menu = ViewMenu(args.Chat.Id); await bot.SendTextMessageAsync(args.Chat.Id, "❗ Учусь отвечать на этот вопрос правильно!", replyMarkup : (IReplyMarkup)menu); // доработать чтобы клаву не сворачивало } break; } } string text = e.Message.Text; Console.WriteLine($"{args.Chat.FirstName}: {text}"); }
private static async void Bot_OnCallbackQuery(object sender, Telegram.Bot.Args.CallbackQueryEventArgs e) { var args = e.CallbackQuery; if (args.Data == "insta" || args.Data == "vk" || args.Data == "friends") { await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, null); DbWorking.RecordingAnalitics(args.Data); await bot.SendTextMessageAsync(args.Message.Chat.Id, "Укажите ваш пол?😉", replyMarkup : (IReplyMarkup)AnalyticsInlineKeyboard(2)); } else if (args.Data == "boy" || args.Data == "girl") { await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, null); DbWorking.RecordingAnalitics(args.Data); await bot.SendTextMessageAsync(args.Message.Chat.Id, "Укажите ваш возраст?😌", replyMarkup : (IReplyMarkup)AnalyticsInlineKeyboard(3)); } else if (args.Data == "One_years" || args.Data == "Two_years" || args.Data == "Three_years" || args.Data == "Four_years") { var startMenu = ViewMenu(args.Message.Chat.Id); await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, null); DbWorking.RecordingAnalitics(args.Data); string startText = "🤝Я рад приветствовать тебя в этом прекрасном месте. Спасибо, что заскочил! " + "Меня зовут Фретти и я тебе помогу разобраться с компьютерными комплектующими," + " а также подобрать нужные детали для твоего компьютера. Поехали, внизу у тебя появилось меню выбора. Пользуйся!"; await bot.SendTextMessageAsync(args.Message.Chat.Id, $"{startText}", replyMarkup : (IReplyMarkup)startMenu); } else if (args.Data == "😍" || args.Data == "😏" || args.Data == "🤬") { await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, null); await bot.SendTextMessageAsync(args.Message.Chat.Id, "Спасибо за ответ!"); await bot.SendTextMessageAsync(1077551925, $"Зарегистрирован ответ на форму кнопки <strong>✍ Написать владельцу</strong> от пользователя " + $"@{args.Message.Chat.Username} в {DateTime.Now.ToString("HH:mm")}, {DateTime.Now.ToString("dd MMMM yyyy")}", ParseMode.Html, replyMarkup : new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithCallbackData("Смотреть ответ"), }, })); DbWorking.AddRating(e); } else if (args.Data == "Смотреть ответ") { DbWorking.ViewOwner(e); } else if (args.Data == "price") { price_entry = false; await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, null); await bot.SendTextMessageAsync(args.Message.Chat.Id, "Введите цену (цифры) в BYR за которую хотите приобрести этот товар и я помогу вам подобрать оптимальный вариант.", replyMarkup : new ReplyKeyboardMarkup( new KeyboardButton[][] { new KeyboardButton[] { "Отмена" }, }) { ResizeKeyboard = true }); } else if (args.Data == "view") { await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, null); DbWorking.ListComputerParts(e, productName); } else if (args.Data == "test") { await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, null); } else if (args.Data == "producer") { if (productName == "Дисковый накопитель") { await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, replyMarkup : new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithCallbackData("HDD", "hdd"), InlineKeyboardButton.WithCallbackData("SSD", "ssd"), }, new[] { InlineKeyboardButton.WithCallbackData("Назад", "exit"), } })); } else if (productName == "Видеокарта") { await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, replyMarkup : new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithCallbackData("NVIDIA", "nvidia"), InlineKeyboardButton.WithCallbackData("AMD", "amd"), }, new[] { InlineKeyboardButton.WithCallbackData("Назад", "exit"), } })); } else { await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, replyMarkup : new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithCallbackData("INTEL", "intel"), InlineKeyboardButton.WithCallbackData("AMD", "amd"), }, new[] { InlineKeyboardButton.WithCallbackData("Назад", "exit"), } })); } } else if (args.Data == "exit") { await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, replyMarkup : (InlineKeyboardMarkup)(IReplyMarkup)ComputerPartsInlineKeyboard()); } else if (args.Data == "nvidia") { await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, null); productTypes = "NVIDIA"; DbWorking.ProducerComputerParts(e, productTypes, productName); } else if (args.Data == "intel") { await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, null); productTypes = "INTEL"; DbWorking.ProducerComputerParts(e, productTypes, productName); } else if (args.Data == "amd") { await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, null); productTypes = "AMD"; DbWorking.ProducerComputerParts(e, productTypes, productName); } else if (args.Data == "hdd") { productTypes = "HDD"; await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, null); DbWorking.ListComputerParts(e, productTypes); } else if (args.Data == "ssd") { productTypes = "SSD"; await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, null); DbWorking.ListComputerParts(e, productTypes); } else if (args.Data == "answer") { answer_to_the_question = false; messId = e.CallbackQuery.Message.MessageId; await bot.EditMessageReplyMarkupAsync(args.Message.Chat.Id, args.Message.MessageId, null); await bot.SendTextMessageAsync(args.Message.Chat.Id, "Введите сообщение: "); } else { await bot.SendTextMessageAsync(chatId : args.Message.Chat.Id, "❗ Учусь отвечать на этот вопрос правильно!"); } }
static public object ComputerPartsInlineKeyboard() { var keys = (IReplyMarkup)InlineKeyboardMarkup.Empty(); DbWorking.RecordingClickKeyboard(productName); if (productName == "Видеокарта" || productName == "Процессор" || productName == "Материнская плата") { keys = new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithCallbackData("🧾 Список товаров", "view"), }, new[] { InlineKeyboardButton.WithCallbackData("💰 Цена", "price"), }, new[] { InlineKeyboardButton.WithCallbackData("👔 Производитель", "producer"), }, new[] { InlineKeyboardButton.WithCallbackData("❌ Закрыть", "test"), }, }); } else if (productName == "Дисковый накопитель") { keys = new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithCallbackData("🧾 Список товаров", "view"), }, new[] { InlineKeyboardButton.WithCallbackData("💰 Цена", "price"), }, new[] { InlineKeyboardButton.WithCallbackData("🧰 Виды", "producer"), }, new[] { InlineKeyboardButton.WithCallbackData("❌ Закрыть", "test"), }, }); } else { keys = new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithCallbackData("🧾 Список товаров", "view"), }, new[] { InlineKeyboardButton.WithCallbackData("💰 Цена", "price"), }, new[] { InlineKeyboardButton.WithCallbackData("❌ Закрыть", "test"), }, }); } return(keys); }