Beispiel #1
0
        public Keyboard(int messageId)
        {
            using (BotDB db = new BotDB())
            {
                Logger.Wright("Тип клавиатуры: " + db.Messages.Find(messageId).KType, "Keyboard", LogLevel.Info);

                switch (db.Messages.Find(messageId).KType)
                {
                case MessageKeyboardType.none:
                    Remove = new ReplyKeyboardRemove
                    {
                        RemoveKeyboard = true
                    };

                    break;

                case MessageKeyboardType.Reply:
                    Reply = new ReplyKeyboardMarkup();

                    Message  message = db.Messages.Find(messageId);
                    Button[] btns    = db.Buttons.Where <Button>(b => b.MessageId == messageId).ToArray <Button>();

                    Logger.Wright("Количество кнопок: " + btns.Length, "ReplyKeyboard", LogLevel.Info);

                    int rows = (int)Math.Ceiling((Decimal)btns.Length / 2);

                    Reply.ResizeKeyboard  = true;
                    Reply.OneTimeKeyboard = true;
                    Reply.Keyboard        = new Telegram.Bot.Types.KeyboardButton[rows][];
                    int n = 0;

                    for (int r = 0; r < rows && n < btns.Length; r++)
                    {
                        int columns = 2;
                        if ((btns.Length - n) == 1)
                        {
                            columns = 1;
                        }

                        Reply.Keyboard[r] = new Telegram.Bot.Types.KeyboardButton[columns];

                        for (int c = 0; c < columns && n < btns.Length; c++, n++)
                        {
                            Reply.Keyboard[r][c] = new Telegram.Bot.Types.KeyboardButton(btns[n].Text)
                            {
                                RequestContact  = btns[n].Contact,
                                RequestLocation = btns[n].Location
                            };
                        }
                    }

                    break;

                case MessageKeyboardType.Inline:
                    break;
                }
            }
        }
Beispiel #2
0
 /// <summary>
 /// Сообщение пользователя
 /// </summary>
 /// <param name="msg">Текст сообщения</param>
 /// <param name="userId">Идентификатор пользователя</param>
 public static void Wright(string msg, int userId)
 {
     using (BotDB db = new BotDB())
     {
         if (msg != null)
         {
             Logger.Wright(db.Users.Find(userId).FirstName + ": " + msg, "", userId, LogLevel.Info, LogType.Message);
         }
         else
         {
             Logger.Wright("Ответ " + db.Users.Find(userId).FirstName + "после регистрации", "", userId, LogLevel.Info, LogType.Message);
         }
     }
 }
Beispiel #3
0
        public static int Registration(Telegram.Bot.Types.Contact contact)
        {
            Logger.Wright("Запрос регистрации. TelegramId: " + contact.UserId + " PhoneNumber: " + contact.PhoneNumber,
                          "Регистрация", 1, LogLevel.Info);

            using (BotDB db = new BotDB())
            {
                List <User> users = db.Users.ToList <User>();

                foreach (User u in users)
                {
                    int test = u.Phone.CompareTo(contact.PhoneNumber);

                    if (u.Phone.CompareTo(contact.PhoneNumber) == 0)
                    {
                        Logger.Wright("Регистрация успешно пройдена. TelegramId: " +
                                      contact.UserId + " PhoneNumber: " + contact.PhoneNumber, "Регистрация", u.Id, LogLevel.Info);

                        if (u.FirstName == null)
                        {
                            u.FirstName = contact.FirstName;
                        }
                        if (u.LastName == null)
                        {
                            u.LastName = contact.LastName;
                        }
                        u.TelegramId = contact.UserId;

                        if (db.SaveChanges() > 0)
                        {
                            Logger.Wright("База обновлена!", "Регистрация", u.Id, LogLevel.Info);
                        }
                        else
                        {
                            Logger.Wright("Ошибка обновления базы", "Регистрация", u.Id, LogLevel.Error);
                        }

                        return(u.Id);
                    }
                }
            }
            Logger.Wright("Регистрация отклонена. TelegramId: " + contact.UserId + " PhoneNumber: " + contact.PhoneNumber,
                          "Регистрация", 1, LogLevel.Info);

            return(1);
        }
Beispiel #4
0
        public static int Authorization(int TUserId)
        {
            Logger.Wright("Запрос авторизации.TelegramId: " + TUserId, "Авторизация", 1, LogLevel.Info);

            using (var db = new BotDB())
            {
                foreach (User u in db.Users)
                {
                    if (u.TelegramId == TUserId)
                    {
                        Logger.Wright("Авторизация успешно пройдена. TelegramId: " + TUserId, "Авторизация", u.Id, LogLevel.Info);

                        return(u.Id);
                    }
                }
            }
            Logger.Wright("Авторизация отклонена. TelegramId: " + TUserId, "Авторизация", 1, LogLevel.Info);

            return(1);
        }
Beispiel #5
0
        private static void Wright(string msg, string source, int userId, LogLevel level, LogType type)
        {
            using (BotDB db = new BotDB())
            {
                Log log = new Log
                {
                    Type      = type,
                    Lvl       = level,
                    TXT       = msg,
                    TimeStamp = DateTime.Now,
                    Source    = source
                };
                if (userId > 0)
                {
                    log.UserId = userId;
                }

                db.Logs.Add(log);
                db.SaveChanges();
            }
        }
Beispiel #6
0
        public static async void Reply(int msgId, long chatId, Telegram.Bot.Types.Message msg, int userId)
        {
            Logger.Wright(msg.Text, userId);

            using (BotDB db = new BotDB())
            {
                Message message = db.Messages.Find(msgId);

                Logger.Wright(message.Text);
                Logger.Wright("Тип сообщения: " + message.Type, "Reply", LogLevel.Info);

                Keyboard keyboard = new Keyboard(msgId);
                var      client   = await Bot.Get();

                Telegram.Bot.Types.Message result;

                switch (message.Type)
                {
                case MessageType.Info:
                    if (message.KType == MessageKeyboardType.none)
                    {
                        result = await client.SendTextMessageAsync(chatId, message.Text, Telegram.Bot.Types.Enums.ParseMode.Default,
                                                                   false, false, 0, keyboard.Remove);

                        if (result != null)
                        {
                            Logger.Wright("Сообщение отправленно!", "Reply", userId, LogLevel.Info);
                        }
                        else
                        {
                            Logger.Wright("Сообщение НЕ отправленно!", "Reply", userId, LogLevel.Error);
                        }
                    }
                    else
                    {
                        result = await client.SendTextMessageAsync(chatId, message.Text);

                        if (result != null)
                        {
                            Logger.Wright("Сообщение отправленно!", "Reply", userId, LogLevel.Info);
                        }
                        else
                        {
                            Logger.Wright("Сообщение НЕ отправленно!", "Reply", userId, LogLevel.Error);
                        }
                    }

                    break;

                case MessageType.Condition:
                    switch (message.KType)
                    {
                    case MessageKeyboardType.Reply:
                        result = await client.SendTextMessageAsync(chatId, message.Text,
                                                                   Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboard.Reply);

                        if (result != null)
                        {
                            Logger.Wright("Сообщение отправленно!", "Reply", userId, LogLevel.Info);
                        }
                        else
                        {
                            Logger.Wright("Сообщение НЕ отправленно!", "Reply", userId, LogLevel.Error);
                        }

                        break;

                    case MessageKeyboardType.Inline:
                        result = await client.SendTextMessageAsync(chatId, message.Text, Telegram.Bot.Types.Enums.ParseMode.Default,
                                                                   false, false, 0, keyboard.Inline);

                        if (result != null)
                        {
                            Logger.Wright("Сообщение отправленно!", "Reply", userId, LogLevel.Info);
                        }
                        else
                        {
                            Logger.Wright("Сообщение НЕ отправленно!", "Reply", userId, LogLevel.Error);
                        }

                        break;
                    }

                    break;

                case MessageType.Script:

                    break;
                }
            }
        }