Exemplo n.º 1
0
        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;
                }
            }
        }
Exemplo n.º 2
0
 public void Help(TelegramAccount user)
 {
     _botClient.SendTextMessageAsync(user.ChatId, "Команды:\n" +
                                     "/help - Вывести возможные команды\n" +
                                     "/subscribe - Подписаться на новые письма\n" +
                                     "/unsubscribe - Отписаться от получения писем\n");
 }
Exemplo n.º 3
0
 public void Subscribe(TelegramAccount follower)
 {
     if (_accountsState.ContainsKey(follower.ChatId))
     {
         _accountsState.Remove(follower.ChatId);
     }
     _accountsState.Add(follower.ChatId, EState.InSubscibe);
     _botClient.SendTextMessageAsync(follower.ChatId, "Пожалуйста, введите уникальный идентификатор подписки");
 }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 7
0
 public void Start(TelegramAccount user)
 {
     _botClient.SendTextMessageAsync(user.ChatId, "Вы можете вызвать /help для получения возможных команд");
 }
 public TelegramCommunicator GetCommunicator(TelegramAccount account)
 {
     return(new TelegramCommunicator(account.TelegramId, this));
 }
Exemplo n.º 9
0
        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);
        }