public void Post([FromBody] Update message) { if (message.Type == UpdateType.MessageUpdate) { var from = new TelegramAccount { ChatId = message.Message.From.Id }; switch (message.Message.Text) { case "/start": _service.Start(from); break; case "/help": _service.Help(from); break; case "/subscribe": _service.Subscribe(from); break; case "/unsubscribe": _service.Unsubscribe(from); break; default: _service.OnMessage(from, message.Message.Text); break; } } }
public void Help(TelegramAccount user) { _botClient.SendTextMessageAsync(user.ChatId, "Команды:\n" + "/help - Вывести возможные команды\n" + "/subscribe - Подписаться на новые письма\n" + "/unsubscribe - Отписаться от получения писем\n"); }
public void Subscribe(TelegramAccount follower) { if (_accountsState.ContainsKey(follower.ChatId)) { _accountsState.Remove(follower.ChatId); } _accountsState.Add(follower.ChatId, EState.InSubscibe); _botClient.SendTextMessageAsync(follower.ChatId, "Пожалуйста, введите уникальный идентификатор подписки"); }
public Authorization LinkAccount(TelegramAccount account) { if (!IsConnected) { Console.WriteLine("Not connected to Telegram."); return(Authorization.MissingFields); } LoginWidget widget = new LoginWidget(OTHubSettings.Instance.Telegram.BotKey); var dict = account.ToStringDictionary(); return(widget.CheckAuthorization(dict)); }
private bool doUnsubscibe(TelegramAccount follower, string guid) { int accountId; if (Int32.TryParse(guid, out accountId)) { var account = _context.Accounts.Include(a => a.TelegramAccounts).FirstOrDefault(a => a.Id == accountId); if (account != null && account.TelegramAccounts.Contains(follower)) { bool result = account.TelegramAccounts.Remove(follower); _context.SaveChanges(); return(result); } } return(false); }
public void OnMessage(TelegramAccount fromUser, string message) { if (_accountsState.ContainsKey(fromUser.ChatId)) { switch (_accountsState[fromUser.ChatId]) { case EState.InSubscibe: if (doSubscribe(fromUser, message)) { _botClient.SendTextMessageAsync(fromUser.ChatId, "Вы подписаны"); } else { _botClient.SendTextMessageAsync(fromUser.ChatId, "Не удалось подписаться, нет такого идентификатора или вы уже подписаны на этот аккаунт"); } break; case EState.InUnsubscribe: if (doUnsubscibe(fromUser, message)) { _botClient.SendTextMessageAsync(fromUser.ChatId, "Вы отписаны"); } else { _botClient.SendTextMessageAsync(fromUser.ChatId, "Не удалось отписаться, нет такой записи в подписках"); } break; } _accountsState.Remove(fromUser.ChatId); } else { Start(fromUser); } }
public void Start(TelegramAccount user) { _botClient.SendTextMessageAsync(user.ChatId, "Вы можете вызвать /help для получения возможных команд"); }
public TelegramCommunicator GetCommunicator(TelegramAccount account) { return(new TelegramCommunicator(account.TelegramId, this)); }
protected override void OnCreate(Bundle savedInstanceState) { Log.Debug(TAG, "OnCreate"); base.OnCreate(savedInstanceState); UserFooterLayout = FindViewById <LinearLayout>(Resource.Id.user_footer_layout); int user_id = Intent.Extras.GetInt(nameof(UserModel.Id), 0); if (user_id < 1) { string err_title = GetText(Resource.String.err_title_2); UserName.Text = err_title; UserName.Enabled = false; UserEmail.Text = err_title; UserEmail.Enabled = false; UserPhone.Text = err_title; UserPhone.Enabled = false; UserAlarmSubscribing.Enabled = false; UserCommandsAllowed.Enabled = false; UserCardSubHeader.Text = err_title; UserCardSubHeader.Enabled = false; UserCardButtonOk.Enabled = false; return; } UserModel user = null; lock (DatabaseContext.DbLocker) { using (DatabaseContext db = new DatabaseContext(gs.DatabasePathBase)) { user = db.Users.Find(user_id); } } userId = user.Id; UserName.Text = user.Name; UserEmail.Text = user.Email; UserPhone.Text = user.Phone; UserAlarmSubscribing.Checked = user.AlarmSubscriber; UserCommandsAllowed.Checked = user.CommandsAllowed; TelegramUserModel telegramUser = null; lock (DatabaseContext.DbLocker) { using (DatabaseContext db = new DatabaseContext(gs.DatabasePathBase)) { telegramUser = db.TelegramUsers.FirstOrDefault(x => x.LinkedUserId == user.Id); } } if (telegramUser != null) { TelegramAccount.SetSelection(TelegramUsers.Keys.ToList().IndexOf(telegramUser.Id)); } UserCardHeader.Text = GetText(Resource.String.edit_user_title); UserCardSubHeader.Text = GetText(Resource.String.edit_user_sub_title); AppCompatButton buttonDeleteUser = new AppCompatButton(this) { Text = GetText(Resource.String.delete_title) }; buttonDeleteUser.SetTextColor(Color.DarkRed); buttonDeleteUser.Click += ButtonDeleteUser_Click; buttonDeleteUser.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent); UserFooterLayout.AddView(buttonDeleteUser); }