Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
                }
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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("___");
            }
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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();
        }
Exemplo n.º 13
0
        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();
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        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));
        }
Exemplo n.º 17
0
        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());
            }
        }
Exemplo n.º 18
0
        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());
            }
        }
Exemplo n.º 19
0
        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();
            }
        }