private async Task ProcessShowAll() { await Task.Delay(100); var myReqs = Database.GetAllRequests(Username); if (myReqs.Count == 0) { await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.EmptyKey)); return; } int idx = 0; while (idx < myReqs.Count) { int count = Math.Min(10, myReqs.Count - idx); var lst = myReqs.GetRange(idx, count); string result = lst.Count > 1 ? lst.Aggregate((current, next) => current + "\n\n" + next) : lst[0]; await SendMessageAsync(_chatId, result, ParseMode.Html); idx += 10; } }
private async Task ProcessChangeEndDate(string msg) { await Task.Delay(100); if (msg.Equals(LD.CancelKey) || msg.Equals("/start")) { await Start(); return; } if (!msg.Equals(LD.SkipKey)) { if (!int.TryParse(msg, out _daysQuantity)) { await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.WrongInputKey)); return; } } else { _daysQuantity = -1; } Database.UpdateRequest(_reqIdForUpdate, Username, _quantity, _currency, _bank, _fee, DateTime.Now, _daysQuantity > 0 ? DateTime.Now + TimeSpan.FromDays(_daysQuantity) : DateTime.MinValue); await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.SuccessfulChangeKey)); await Start(); string reqString = Database.GetRequest(_reqIdForUpdate, Username); await SendNotifications(string.Format(LD.GetTranslate(Username, LD.ChangedReqNotifKey), reqString)); }
private async Task ProcessShowMy() { await Task.Delay(100); var myReqs = Database.GetRequestsFor(Username, Username); if (myReqs.Count == 0) { await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.EmptyKey)); return; } foreach (var req in myReqs) { int idx1 = req.IndexOf('('); int idx2 = req.IndexOf(')'); if (idx1 >= 0 && idx2 >= 0) { string reqId = req.Substring(idx1, (idx2 - idx1) + 1); var keyboard = new InlineKeyboardMarkup(new[] { new[] // first row { InlineKeyboardButton.WithCallbackData(string.Format("{0} {1}", LD.GetTranslate(Username, LD.RemoveKey), reqId), string.Format("{0} {1}", LD.RemoveKey, reqId)), InlineKeyboardButton.WithCallbackData(string.Format("{0} {1}", LD.GetTranslate(Username, LD.ChangeKey), reqId), string.Format("{0} {1}", LD.ChangeKey, reqId)), } }); await SendMessageAsync(_chatId, req, ParseMode.Html, keyboard); } } }
private async Task ProcessBank(string msg) { await Task.Delay(100); if (msg.Equals(LD.CancelKey) || msg.Equals("/start")) { Console.WriteLine(Username + " Отмена"); await Start(); return; } if (string.IsNullOrEmpty(msg)) { await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.WrongInputKey)); return; } _bank = StripTagsRegex(msg); CurrentStep = RequestSteps.EnterEndDate; var keyboard = new InlineKeyboardMarkup(new[] { new[] // first row { InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.CancelKey), LD.CancelKey), } }); await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.EnterReqDurationKey), ParseMode.Default, keyboard); }
private async Task ProcessChangeBank(string msg) { await Task.Delay(100); if (msg.Equals(LD.CancelKey) || msg.Equals("/start")) { await Start(); return; } if (!msg.Equals(LD.SkipKey)) { _bank = StripTagsRegex(msg); } else { _bank = string.Empty; } CurrentStep = RequestSteps.ChangeEndDate; var keyboard = new InlineKeyboardMarkup(new[] { new[] // first row { InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.CancelKey), LD.CancelKey), InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.SkipKey), LD.SkipKey), } }); await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.EnterReqDurationKey), ParseMode.Default, keyboard); }
private async Task ProcessEndDate(string msg) { await Task.Delay(100); if (msg.Equals(LD.CancelKey) || msg.Equals("/start")) { Console.WriteLine(Username + " Отмена"); await Start(); return; } if (!int.TryParse(msg, out _daysQuantity)) { await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.WrongInputKey)); return; } int reqId = Database.AddRequest(Username, _reqType, _quantity, _currency, _bank, _fee, DateTime.Now, DateTime.Now + TimeSpan.FromDays(_daysQuantity)); await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.SuccessfulRequestKey)); await Start(); string requestString = Database.GetRequest(reqId, Username); await SendNotifications(string.Format(LD.GetTranslate(Username, LD.NewReqNotifKey), requestString)); }
private async Task ProcessQuantityAndFee(string msg) { await Task.Delay(100); if (msg.Equals(LD.CancelKey) || msg.Equals("/start")) { Console.WriteLine(Username + " Отмена"); await Start(); return; } string[] splitted = msg.Split(' '); if (splitted.Length < 3 || !int.TryParse(splitted[0], out _quantity) || !float.TryParse(splitted[2], out _fee)) { await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.WrongInputKey)); await ProcessStartState(_reqType == RequestType.Buy?LD.BuyKey : LD.SellKey); return; } _currency = splitted[1]; CurrentStep = RequestSteps.EnterBank; var keyboard = new InlineKeyboardMarkup(new[] { new[] // first row { InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.CancelKey), LD.CancelKey), } }); await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.EnterBankNameKey), ParseMode.Default, keyboard); }
private static string GetLocalizedString(RequestType type, string callUser) { switch (type) { case RequestType.Buy: return(LD.GetTranslate(callUser, LD.BuyKey).ToLower()); case RequestType.Sell: return(LD.GetTranslate(callUser, LD.SellKey).ToLower()); default: return("___"); } }
public async Task Start() { CurrentStep = RequestSteps.Start; bool enabledNotifications = Database.IsNotificationsRowExistForUser(Username); var keyboard = new InlineKeyboardMarkup(new[] { new[] // first row { InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.BuyKey), LD.BuyKey), InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.SellKey), LD.SellKey), }, new[] // third row { InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.ShowMyReqKey), LD.ShowMyReqKey), InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.ShowAllReqKey), LD.ShowAllReqKey), }, new[] { InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.VoteKey), LD.VoteKey), InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.UnvoteKey), LD.UnvoteKey), InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.EscrowListKey), LD.EscrowListKey), }, new [] { InlineKeyboardButton.WithCallbackData(enabledNotifications ? LD.GetTranslate(Username, LD.DisableNotifKey) : LD.GetTranslate(Username, LD.EnableNotifKey), enabledNotifications ? LD.DisableNotifKey : LD.EnableNotifKey), }, new [] { InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.EnglishKey), LD.EnglishKey), InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.RussianKey), LD.RussianKey), } }); try { if (_startMessage != null) { await _bot.DeleteMessageAsync(_chatId, _startMessage.MessageId); } } catch { _startMessage = null; } _startMessage = await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.StartMessageKey), ParseMode.Html, keyboard); }
private async Task ProcessEscrowList() { var list = Database.GetEscrowList(); if (list.Count == 0) { await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.EmptyKey)); return; } string result = list.Aggregate((current, next) => current + "\n" + next); await SendMessageAsync(_chatId, result, ParseMode.Html); }
private async Task ProcessChangeQuantityAndFee(string msg) { await Task.Delay(100); if (msg.Equals(LD.CancelKey) || msg.Equals("/start")) { await Start(); return; } if (!msg.Equals(LD.SkipKey)) { string[] splitted = msg.Split(' '); if (splitted.Length < 3 || !int.TryParse(splitted[0], out _quantity) || !float.TryParse(splitted[2], out _fee)) { await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.WrongInputKey)); return; } _currency = splitted[1]; } else { _currency = string.Empty; _quantity = -1; _fee = -1f; } CurrentStep = RequestSteps.ChangeBank; var keyboard = new InlineKeyboardMarkup(new[] { new[] // first row { InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.CancelKey), LD.CancelKey), InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.SkipKey), LD.SkipKey), } }); await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.EnterBankNameKey), ParseMode.Default, keyboard); }
private async Task ProcessUnvote(string msg) { await Task.Delay(100); if (msg.Equals(LD.CancelKey) || msg.Equals("/start")) { await DeleteMessageAsync(_unvoteMessage); await Start(); return; } string votedUser = msg.TrimStart('@'); Database.Unvote(Username, votedUser); int voteCount = Database.GetVotesCount(Username); await DeleteMessageAsync(_unvoteMessage); await SendMessageAsync(_chatId, string.Format(LD.GetTranslate(Username, LD.UnvoteSuccessfulKey), votedUser, voteCount)); await Start(); }
private async Task ProcessVote(string msg) { await Task.Delay(100); if (msg.Equals(LD.CancelKey) || msg.Equals("/start")) { await Start(); return; } string votedUser = msg.TrimStart('@'); if (!Database.IsUserRegistered(votedUser)) { await SendMessageAsync(_chatId, string.Format(LD.GetTranslate(Username, LD.VotedUserNotRegisteredKey), votedUser)); return; } if (Database.IsAlreadyVotedByUser(Username, votedUser)) { await SendMessageAsync(_chatId, string.Format(LD.GetTranslate(Username, LD.VotedUserAlreadyVotedKey), votedUser)); return; } if (Username.Equals(votedUser)) { await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.VotedUserIsMySelfKey)); return; } Database.Vote(Username, votedUser); int voteCount = Database.GetVotesCount(Username); await SendMessageAsync(_chatId, string.Format(LD.GetTranslate(Username, LD.VoteSuccessfulKey), votedUser, voteCount)); await Start(); }
private static List <string> GetResultsForSql(string sql, string callUser) { List <string> result = new List <string>(); SQLiteCommand command = new SQLiteCommand(sql, _dbConnection); try { SQLiteDataReader reader = command.ExecuteReader(); while (reader.Read()) { var num = reader["id"].ToString(); string user = "******" + reader["username"].ToString(); string reqType = GetLocalizedString((RequestType)(int.Parse(reader["requestType"].ToString())), callUser); var quantity = reader["quantity"].ToString(); string currency = reader["currency"].ToString(); string fee = reader["fee"].ToString(); string bankName = reader["bankName"].ToString(); string startDate = reader["startDate"].ToString(); string endDate = reader["endDate"].ToString(); string line = string.Format(LD.GetTranslate(callUser, LD.RequestResultStringTemplate), num, user, reqType, quantity, currency, fee, bankName, startDate, endDate); result.Add(line); } reader.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } return(result); }
public static string GetRequest(int id, string callUser) { string sql = "SELECT * FROM requests WHERE id=" + id; SQLiteCommand command = new SQLiteCommand(sql, _dbConnection); string result = string.Empty; try { SQLiteDataReader reader = command.ExecuteReader(); while (reader.Read()) { var num = reader["id"].ToString(); string user = "******" + reader["username"].ToString(); string reqType = GetLocalizedString((RequestType)(int.Parse(reader["requestType"].ToString())), callUser); var quantity = reader["quantity"].ToString(); string currency = reader["currency"].ToString(); string fee = reader["fee"].ToString(); string bankName = reader["bankName"].ToString(); string startDate = reader["startDate"].ToString(); string endDate = reader["endDate"].ToString(); result = string.Format(LD.GetTranslate(callUser, LD.RequestResultStringTemplate), num, user, reqType, quantity, currency, fee, bankName, startDate, endDate); } reader.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } return(result); }
private IReplyMarkup GetMarkupForUnvote(List <string> usernameList) { InlineKeyboardButton[][] keyboard = new InlineKeyboardButton[usernameList.Count + 1][]; for (int i = 0; i < usernameList.Count; ++i) { keyboard[i] = new InlineKeyboardButton[] { InlineKeyboardButton.WithCallbackData(usernameList[i]) }; } keyboard[usernameList.Count] = new InlineKeyboardButton[] { InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.CancelKey), LD.CancelKey) }; return(new InlineKeyboardMarkup(keyboard)); }
private static async Task HandlePrivateMessage(Message message) { if (string.IsNullOrEmpty(message.From.Username)) { await SendMessageAsync(message.Chat.Id, @"Для работы со мной Вам нужно установить ваш Username в Телеграм. Сделайте это и попробуйте еще раз введя команду /start You need to set your username шт Telegram first.", parseMode : ParseMode.Html, replyMarkup : new ReplyKeyboardRemove()); return; } if (!Database.IsUserRegistered(message.From.Username)) { await SendMessageAsync(message.Chat.Id, LD.GetTranslate(message.From.Username, LD.PleaseRegisterGroupChatKey)); return; } if (message.Text.StartsWith("/start")) { if (!_requestsDic.ContainsKey(message.From.Username)) { UserRequestProcess userReq = new UserRequestProcess(Bot, message.From.Username, message.Chat.Id); _requestsDic.Add(message.From.Username, userReq); } var req = _requestsDic[message.From.Username]; if (req.CurrentStep == RequestSteps.Start) { await req.Start(); } else { await req.ProcessMessage("/start"); } }/* * else if (message.Text.StartsWith("/startgame")) * { * await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); * * var keyboard = new InlineKeyboardMarkup(new[] * { * new[] // first row * { * InlineKeyboardButton.WithCallbackData("Удар в голову"), * InlineKeyboardButton.WithCallbackData("Блок головы"), * }, * new[] // second row * { * InlineKeyboardButton.WithCallbackData("Удар в грудь"), * InlineKeyboardButton.WithCallbackData("Блок груди"), * }, * new[] * { * InlineKeyboardButton.WithCallbackData("Удар в пояс"), * InlineKeyboardButton.WithCallbackData("Блок пояса"), * }, * new[] * { * InlineKeyboardButton.WithCallbackData("Удар в ноги"), * InlineKeyboardButton.WithCallbackData("Блок ног"), * }, * new[] * { * InlineKeyboardButton.WithSwitchInlineQueryCurrentChat("Test") * } * }); * * await Task.Delay(500); // simulate longer running task * * if (_lastMessage != null) * await Bot.DeleteMessageAsync(message.Chat.Id, _lastMessage.MessageId); * * _lastMessage = await Bot.SendTextMessageAsync(message.Chat.Id, "Choose", * replyMarkup: keyboard); * } * else if (message.Text.StartsWith("/keyboard")) // send custom keyboard * { * var keyboard = new ReplyKeyboardMarkup(new[] * { * new [] // first row * { * new KeyboardButton("1.1"), * new KeyboardButton("1.2"), * }, * new [] // last row * { * new KeyboardButton("2.1"), * new KeyboardButton("2.2"), * } * }); * * if (_lastMessage != null) * await Bot.DeleteMessageAsync(message.Chat.Id, _lastMessage.MessageId); * * _lastMessage = await Bot.SendTextMessageAsync(message.Chat.Id, "Choose", * replyMarkup: keyboard); * }*/ else if (_requestsDic.ContainsKey(message.From.Username) && _requestsDic[message.From.Username].CurrentStep != RequestSteps.Start) { await _requestsDic[message.From.Username].ProcessMessage(message.Text); } else { var usage = @"<b>Использование:</b> /start - Начало процесса <b>Usage:</b> /start - start process"; await SendMessageAsync(message.Chat.Id, usage, ParseMode.Html, replyMarkup : new ReplyKeyboardRemove()); } }
private static async Task HandleGroupMessage(Message message) { if (message.Text.StartsWith("/setmasterchat")) { if (_masterChat != null) { return; } if (string.IsNullOrEmpty(message.From.Username)) { await SendMessageAsync(message.Chat.Id, @"Вам нужно установить ваш Username", parseMode : ParseMode.Html, replyMarkup : new ReplyKeyboardRemove()); return; } if (_masterChat == null) { _masterChat = message.Chat; } if (_masterChatAdmins == null) { _masterChatAdmins = await Bot.GetChatAdministratorsAsync(new ChatId(_masterChat.Id)); } bool isUserAdmin = false; foreach (var chatMember in _masterChatAdmins) { if (message.From.Username == chatMember.User.Username) { isUserAdmin = true; break; } } if (!isUserAdmin) { _masterChat = null; _masterChatAdmins = null; return; } Database.SetMasterChatId(message.Chat.Id); _masterChat = message.Chat; _masterChatAdmins = await Bot.GetChatAdministratorsAsync(_masterChat.Id); await SendMessageAsync(message.Chat.Id, "Успех!"); } else if (message.Text.StartsWith("/list")) { if (_masterChat == null || _masterChatAdmins == null) { return; } bool isUserAdmin = false; foreach (var chatMember in _masterChatAdmins) { if (message.From.Username == chatMember.User.Username) { isUserAdmin = true; break; } } if (!isUserAdmin) { return; } var reqList = Database.GetAllRequests(message.From.Username); if (reqList.Count == 0) { await SendMessageAsync(message.Chat.Id, LD.GetTranslate(message.From.Username, LD.EmptyKey)); } else { string result = reqList.Aggregate((current, next) => current + "\n\n" + next); _lastMessage = await SendMessageAsync(message.Chat.Id, result, ParseMode.Html); } } else if (message.Text.StartsWith("/register")) { if (_masterChat == null) { return; } if (string.IsNullOrEmpty(message.From.Username)) { await SendMessageAsync(message.Chat.Id, @"Для регистрации Вам нужно установить ваш Username (For registration you need to set your username)", parseMode : ParseMode.Html, replyMarkup : new ReplyKeyboardRemove()); return; } if (Database.IsUserRegistered(message.From.Username)) { await SendMessageAsync(message.Chat.Id, string.Format(LD.GetTranslate(message.From.Username, LD.UsernameAlreadyRegisteredKey), message.From.Username), parseMode : ParseMode.Html, replyMarkup : new ReplyKeyboardRemove()); return; } Database.AddUser(message.From.Username); await SendMessageAsync(message.Chat.Id, string.Format(LD.GetTranslate(message.From.Username, LD.UserRegisteredKey), message.From.Username)); } else if (message.Text.StartsWith("/unregister")) { if (string.IsNullOrEmpty(message.From.Username)) { await SendMessageAsync(message.Chat.Id, @"Вам нужно установить ваш Username в Телеграм (Please, set your username in Telegram first)", parseMode : ParseMode.Html, replyMarkup : new ReplyKeyboardRemove()); return; } if (_masterChat == null || _masterChatAdmins == null) { return; } bool isUserAdmin = false; foreach (var chatMember in _masterChatAdmins) { if (message.From.Username == chatMember.User.Username) { isUserAdmin = true; break; } } if (!isUserAdmin) { return; } string username = message.Text.Replace("/unregister", "").Trim('@', ' '); if (string.IsNullOrEmpty(username)) { await SendMessageAsync(message.Chat.Id, @"Пожалуйста, введите команду в виде: <b>/unregister 'username'</b> Подставьте вместо '<username>' имя пользователя.", ParseMode.Html); return; } if (!Database.IsUserRegistered(username)) { await SendMessageAsync(message.Chat.Id, @"Пользователь с таким именем не зарегистрирован - " + username); return; } Database.DeleteUser(username); await SendMessageAsync(message.Chat.Id, "Пользователь " + username + " удален."); } else if (message.Text.StartsWith("/escrowlist")) { var escrowList = Database.GetEscrowList(); if (escrowList.Count == 0) { await SendMessageAsync(message.Chat.Id, "Пусто (Empty)"); return; } string result = escrowList.Aggregate((current, next) => current + "\n" + next); await SendMessageAsync(message.Chat.Id, result, ParseMode.Html); } else { var usage = @"<b>Использование:</b> /setmasterchat - Зарегистрировать мастер-чат(админ) /list - Вывод списка заявок (админ) /register - зарегистрироваться /escrowlist - Вывод списка гарантов /unregister 'username' - удалить юзера (админ) "; await SendMessageAsync(message.Chat.Id, usage, parseMode : ParseMode.Html, replyMarkup : new ReplyKeyboardRemove()); } }
private async Task ProcessStartState(string msg) { await Task.Delay(100); if (msg.Equals(LD.SellKey)) { Console.WriteLine(Username + " Продать"); _reqType = RequestType.Sell; CurrentStep = RequestSteps.EnterQuantityAndFee; var keyboard = new InlineKeyboardMarkup(new[] { new[] // first row { InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.CancelKey), LD.CancelKey), } }); await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.SellingMsgKey), ParseMode.Html, keyboard); } else if (msg.Equals(LD.BuyKey)) { Console.WriteLine(Username + " Купить"); _reqType = RequestType.Buy; CurrentStep = RequestSteps.EnterQuantityAndFee; var keyboard = new InlineKeyboardMarkup(new[] { new[] // first row { InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.CancelKey), LD.CancelKey), } }); await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.BuyingMsgKey), ParseMode.Html, keyboard); } else if (msg.Contains(LD.RemoveKey)) { int id; if (!ParseReqId(msg, out id)) { await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.RemoveErrorKey)); return; } Console.WriteLine(Username + " Удалить заявку №" + id); Database.DeleteReqWithId(Username, id); await SendMessageAsync(_chatId, string.Format(LD.GetTranslate(Username, LD.RemoveSuccessKey), id)); } else if (msg.Contains(LD.ChangeKey)) { int id; if (!ParseReqId(msg, out id)) { await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.ChangeErrorKey)); return; } Console.WriteLine(Username + " Изменить заявку №" + id); CurrentStep = RequestSteps.ChangeQuantityAndFee; _reqIdForUpdate = id; var keyboard = new InlineKeyboardMarkup(new[] { new[] // first row { InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.CancelKey), LD.CancelKey), InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.SkipKey), LD.SkipKey), } }); await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.ChangingMsgKey), ParseMode.Html, keyboard); } else if (msg.Equals(LD.ShowMyReqKey)) { Console.WriteLine(Username + " Посмотреть мои заявки"); await ProcessShowMy(); } else if (msg.Equals(LD.ShowAllReqKey)) { Console.WriteLine(Username + " Посмотреть все заявки"); await ProcessShowAll(); } else if (msg.Equals(LD.VoteKey)) { if (Database.GetVotesCount(Username) <= 0) { await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.ZeroVotesKey)); return; } CurrentStep = RequestSteps.VoteUser; var keyboard = new InlineKeyboardMarkup(new[] { new[] // first row { InlineKeyboardButton.WithCallbackData(LD.GetTranslate(Username, LD.CancelKey), LD.CancelKey), } }); await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.VotingMsgKey), ParseMode.Html, replyMarkup : keyboard); } else if (msg.Equals(LD.UnvoteKey)) { var votedUsersList = Database.GetMyVotedUsers(Username); if (votedUsersList.Count == 0) { await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.VoteListEmptyKey)); return; } CurrentStep = RequestSteps.UnvoteUser; _unvoteMessage = await SendMessageAsync(_chatId, string.Format(@"<b>{0}</b>", LD.GetTranslate(Username, LD.UnvoteKey)), ParseMode.Html, replyMarkup : GetMarkupForUnvote(votedUsersList)); } else if (msg.Equals(LD.EscrowListKey)) { await ProcessEscrowList(); } else if (msg.Contains(LD.DisableNotifKey)) { Console.WriteLine(Username + " Выключить оповещения"); Database.DeleteUserFromNotifications(Username); await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.NotificationsDisabledKey)); await Start(); } else if (msg.Contains(LD.EnableNotifKey)) { Console.WriteLine(Username + " Включить оповещения"); if (!Database.IsNotificationsRowExistForUser(Username)) { Database.AddUserForNotifications(Username, _chatId); } await SendMessageAsync(_chatId, LD.GetTranslate(Username, LD.NotificationsEnabledKey)); await Start(); } else if (msg.Contains(LD.EnglishKey)) { Database.SetUserLanguage(Username, Languages.English); await Start(); } else if (msg.Contains(LD.RussianKey)) { Database.SetUserLanguage(Username, Languages.Russian); await Start(); } }