Esempio n. 1
0
        private async Task <ICommandAnswer> AddMe(Telegram.Bot.Types.Message message)
        {
            if (message.Text.Length > 6)
            {
                await using var db = new DatabaseOsu();

                string player = ProfileLinkParser.Parse(message.Text)?.Id;
                if (string.IsNullOrEmpty(player))
                {
                    player = message.Text.Substring(7);
                }

                if (!string.IsNullOrEmpty(player))
                {
                    if (db.Players.Any(x => x.TelegramID == message.From.Id))
                    {
                        return(Localization.GetAnswer($"annoy_{RNG.NextNoMemory(1, 10)}", message.Chat.Id));
                    }

                    if (!uint.TryParse(player, out var osuID))
                    {
                        // if they used /u/cookiezi instead of /u/124493 we ask osu API for an ID
                        var info = await WebApiHandler.MakeApiRequest(new GetUser(player));

                        if (info == null)
                        {
                            return(Localization.GetAnswer("recentscores_player_add_failed", message.Chat.Id));
                        }
                        else
                        {
                            osuID = info.Id;
                        }
                    }

                    if (osuID != 0)
                    {
                        await db.Players.AddAsync(new DatabaseOsu.Player
                        {
                            OsuID      = osuID,
                            TelegramID = message.From.Id
                        });

                        await db.SaveChangesAsync();

                        return(Localization.GetAnswer("recentscores_player_add_success", message.Chat.Id));
                    }
                }
            }

            return(Localization.GetAnswer("recentscores_player_add_failed", message.Chat.Id));
        }
Esempio n. 2
0
        private async Task <ICommandAnswer> RemoveMe(Telegram.Bot.Types.Message message)
        {
            await using (var db = new DatabaseOsu())
            {
                var player = db.Players.FirstOrDefault(x => x.TelegramID == message.From.Id);
                if (player != null)
                {
                    db.Players.Remove(player);
                    await db.SaveChangesAsync();

                    return(Localization.GetAnswer("recentscores_player_remove_success", message.Chat.Id));
                }

                return(Localization.GetAnswer("generic_fail", message.Chat.Id));
            }
        }