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; } }
public static Client GetBotOwner(OurBot ourBot) { using (var db = GetConnection()) { return(db.Find <Client>(ourBot.OwnerId)); } }
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); }
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); }
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)); } }
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) { }
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; } } }