Beispiel #1
0
        private static void LaunchBot(OurBot ourBot)
        {
            try
            {
                ourBot.TBot   = new TelegramBotClient(ourBot.Token);
                ourBot.Status = BotStatus.Offline;
            }
            catch (ArgumentException)
            {
                ourBot.Status = BotStatus.NotFound;
                return;
            }

            DBHelper.CheckDB(ourBot.TBot.GetMeAsync().Result.Username);
            ourBot.Scheme = SchemeBase.GetShemeFor(ourBot);
            ourBot.TBot.OnCallbackQuery += TBot_OnCallbackQuery;
            ourBot.TBot.OnMessage       += TBot_OnMessage;
            ourBot.TBot.StartReceiving();
            ourBot.Status = BotStatus.Online;
            if (!Bots.ContainsKey(ourBot.TBot))
            {
                Bots.Add(ourBot.TBot, ourBot);
            }
            else
            {
                Bots[ourBot.TBot] = ourBot;
            }
        }
Beispiel #2
0
 public static Client GetBotOwner(OurBot ourBot)
 {
     using (var db = GetConnection())
     {
         return(db.Find <Client>(ourBot.OwnerId));
     }
 }
Beispiel #3
0
        public static IScheme GetShemeFor(OurBot ourBot)
        {
            switch (ourBot.SchemeName)
            {
            case "Scheme1": return(new Shemes.Scheme1.Scheme(ourBot.TBot));

            case "Register": return(new Shemes.Register.RegisterScheme(ourBot.TBot));
            }

            return(null);
        }
Beispiel #4
0
        private ListViewItem GetItemFor(OurBot bot)
        {
            var item        = new ListViewItem(bot.Token);
            var telegramBot = bot.TBot.GetMeAsync().Result;

            item.SubItems.Add((BotList.Items.Count + 1).ToString());
            item.SubItems.Add(telegramBot.Username);
            item.SubItems.Add($"{bot.Owner.Username} ({bot.Owner.FirstName} {bot.Owner.LastName})");
            item.SubItems.Add(bot.Status.ToString());
            item.SubItems[3].ForeColor =
                bot.Status == Models.BotStatus.NotFound ? Color.Red
                : bot.Status == Models.BotStatus.Online ? Color.Red : Color.Black;
            return(item);
        }
Beispiel #5
0
        public void AddOrUpdateBotInfo(OurBot bot)
        {
            var item = BotList.FindItemWithText(bot.Token);

            if (item != null)
            {
                var newItem = GetItemFor(bot);
                newItem.SubItems[1].Text  = item.SubItems[1].Text;
                BotList.Items[item.Index] = newItem;
            }
            else
            {
                BotList.Items.Add(GetItemFor(bot));
            }
        }
Beispiel #6
0
        public static void RegisterNewBot(string token, int ownerId, string schemeName)
        {
            var bot = new OurBot()
            {
                TBot       = new TelegramBotClient(token),
                Token      = token,
                OwnerId    = ownerId,
                SchemeName = schemeName
            };

            bot.Owner = DBHelper.GetBotOwner(bot);
            SchemeBase.GetShemeFor(bot);  // initialize scheme and store texts
            using (var db = DBHelper.GetConnection())
            {
                db.Insert(bot);
            }
            LaunchBot(bot);
            BotLaunched?.Invoke(null, new BotLaunchedArgs(bot));
        }
 public static void UpdateBotInfo(OurBot bot)
 {
     Form.AddOrUpdateBotInfo(bot);
 }
 public BotLaunchedArgs(OurBot bot, double?persentage = null)
 {
     Bot        = bot;
     Persentage = persentage;
 }
 public BotStoppedArgs(OurBot bot, double?persentage = null) : base(bot, persentage)
 {
 }
Beispiel #10
0
        public async override void Next(MessageEventArgs e)
        {
            var    userId  = e.Message.From.Id;
            string btnText = e.Message.Text;
            var    state   = GetUserState(userId);

            switch (state)
            {
            case State.UnknownClientGreeting:
            {
                if (btnText == Texts.LetsButton)
                {
                    SetGetPhoneNumberState(e);
                }
                break;
            }

            case State.CheckContactData:
            {
                if (btnText == Texts.PhoneNumberChangedButton)
                {
                    SetGetPhoneNumberState(e);
                }
                else if (btnText == Texts.EmailAddressChangedButton)
                {
                    SetGetEmailState(e);
                }
                else if (btnText == Texts.ItsAnActualDataButton)
                {
                    SetGetTokenState(e);
                }
                break;
            }

            case State.GetPhoneNumber:
            {
                if (e.Message.Type == Telegram.Bot.Types.Enums.MessageType.ContactMessage)
                {
                    var contact = e.Message.Contact;
                    if (contact.UserId == userId)
                    {
                        SavePhoneNumber(e);
                        await TBot.SendTextMessageAsync(userId, Texts.PhoneNumberSaved);

                        if (DBHelper.IsClient(e.Message.From))
                        {
                            SetCheckContactDataState(e);
                        }
                        else
                        {
                            SetGetEmailState(e);
                        }
                    }
                    else
                    {
                        await TBot.SendTextMessageAsync(userId, $"{Emoji.Error} Нет, нам нужен ВАШ номер.");
                    }
                }
                else
                {
                    await TBot.SendTextMessageAsync(userId, "Нажмите на кнопку внизу, чтобы отправить свой номер.");
                }
                break;
            }

            case State.GetEmailAddress:
            {
                if (FormatHelper.IsEmailAddress(e.Message.Text))
                {
                    SaveEmailAddress(e);
                    await TBot.SendTextMessageAsync(userId, Texts.EmailSaved);

                    if (DBHelper.IsClient(userId))
                    {
                        SetCheckContactDataState(e);
                    }
                    else
                    {
                        SaveNewClient(userId);
                        SetGetTokenState(e);
                    }
                }
                else
                {
                    await TBot.SendTextMessageAsync(userId, $"{Emoji.Error} Это не адрес электронный почты.");
                }
                break;
            }

            case State.GetBotToken:
            {
                string token = e.Message.Text;
                if (TokenIsValid(token))
                {
                    OurBot existedBot = null;
                    using (var db = DBHelper.GetConnection())
                    {
                        existedBot = db.Table <OurBot>().FirstOrDefault(b => b.Token == token);
                    }
                    if (existedBot != null)
                    {
                        var tBotName = new TelegramBotClient(token).GetMeAsync().Result.Username;
                        await TBot.SendTextMessageAsync(userId, $"Данный токен уже используется в Вашем персональном помощнике @{tBotName}");
                    }
                    else
                    {
                        BotController.RegisterNewBot(e.Message.Text, userId, nameof(Scheme1));
                        await TBot.SendTextMessageAsync(userId, $"Поздравляем");
                    }
                }
                else
                {
                    await TBot.SendTextMessageAsync(userId, "Неверный токен");

                    SetGetTokenState(e);
                }
                break;
            }
            }
        }