Example #1
0
        public override async Task ExecuteAsync(Message message, TelegramBotClient client)
        {
            var chatId = message.Chat.Id;

            await client.SendChatActionAsync(chatId, ChatAction.Typing);

            using (TelegramChatContext db = new TelegramChatContext())
            {
                try
                {
                    var events = db.Events;
                    var _event = await events.FirstOrDefaultAsync(x => x.HostChatId == chatId);

                    if (_event == null)
                    {
                        SecretSantaEvent secretSantaEvent = new SecretSantaEvent(chatId);
                        if (events.Where(x => x.InviteKey.Equals(secretSantaEvent.InviteKey)).Any())
                        {
                            secretSantaEvent.GenerateInviteKey();
                        }

                        db.Events.Add(secretSantaEvent);
                        await db.SaveChangesAsync();

                        await client.SendTextMessageAsync(chatId, "You can fill optional fields or/and generate invitation using command /generate.");
                    }
                    else
                    {
                        await client.SendTextMessageAsync(chatId, "You are already registered. You can fill optional fields or/and generate invitation.");
                    }
                }
                catch (Exception e)
                {
                    Debug.WriteLine($"{nameof(RegisterCommand)}:{e.Message}");
                    if (e.InnerException != null)
                    {
                        Debug.WriteLine(e.InnerException.Message);
                    }
                }
            }

            await Registration.SetStageAsync(message, client, RegStage.SelectOption);

            await RegistrationStatus.Execute(message, client);
        }
        public static async Task CheckStageAsync(Message message, TelegramBotClient client)
        {
            var chatId = message.Chat.Id;

            var stage = await GetStageAsync(message);

            if (stage == RegStage.NotStarted)
            {
                await client.SendTextMessageAsync(chatId, "You have to register, use /start command to get instructions");
            }
            else if (stage == RegStage.SelectOption)
            {
                await client.SendTextMessageAsync(chatId, "You can fill optional fields or/and generate invitation using command /generate.");
            }
            else
            {
                if (await SetFieldAsync(message, stage))
                {
                    await SetStageAsync(message, client, RegStage.SelectOption);

                    await RegistrationStatus.Execute(message, client);
                }
            }
        }
Example #3
0
 public override Task ExecuteAsync(Message message, TelegramBotClient client)
 {
     return(RegistrationStatus.Execute(message, client));
 }