Exemplo n.º 1
0
        public async Task GetUserStats(IUser user = null)
        {
            user = user ?? Context.User;

            using var db = new LiteDatabase(@"BotData.db");
            var users = db.GetCollection <UserSteamAccount>("users");

            UserSteamAccount userSteamAccount = users.FindOne(x => x.DiscordID == user.Id);

            if (userSteamAccount == null)
            {
                await ReplyAsync("Такого аккаунта нет в системе.");
            }
            else
            {
                var emoji = new Emoji("\uD83D\uDC4C");

                var msg = await ReplyAsync("Информация об игроке: ", false, await BuildUserStatsEmbedAsync(userSteamAccount.SteamID));

                await msg.AddReactionAsync(emoji);
            }
        }
Exemplo n.º 2
0
        public async Task Register()
        {
            var user = Context.User;

            var channel = Context.Channel as IDMChannel;

            if (channel == null)
            {
                await ReplyAsync("Чтобы зарегистрироваться, пишите боту в личные сообщения.");

                return;
            }

            using (var db = new LiteDatabase(@"BotData.db"))
            {
                //db.DropCollection("users");
                var users = db.GetCollection <UserSteamAccount>("users");
                UserSteamAccount existingUser = users.FindOne(x => x.DiscordID == user.Id);

                if (existingUser != null)
                {
                    await ReplyAsync("Такой аккаунт уже есть! Вы можете разрегистрироваться и пройти регистрацию ещё раз.");

                    return;
                }

                await user.SendMessageAsync("Здравствуйте! Давайте зарегистрируем Вас в системе. Введите, пожалуйста, Ваш Steam32 ID:");

ParseResponse:

                var response = await NextMessageAsync();

                if (response != null)
                {
                    long steamID;
                    if (long.TryParse(response.Content, out steamID))
                    {
                        var playerInfo = await _openDota.Player.GetPlayerByIdAsync(steamID);

                        if (playerInfo == null || playerInfo.Profile == null)
                        {
                            await ReplyAsync("Профиль не найден, попробуйте ввести Steam32ID снова");

                            goto ParseResponse;
                        }
                        EmbedBuilder embedBuilder = new EmbedBuilder();
                        embedBuilder.AddField("Имя в Стиме:", playerInfo.Profile.Personaname);
                        embedBuilder.AddField("Ссылка на профиль", playerInfo.Profile.Profileurl);
                        embedBuilder.WithThumbnailUrl(playerInfo.Profile.Avatarfull.ToString());
                        await ReplyAsync("Это ваш профиль? д/н", false, embedBuilder.Build());

                        var ynResponce = await NextMessageAsync();

                        if (ynResponce != null)
                        {
                            var answer = ynResponce.Content;
                            answer = answer.ToLower();
                            var first = answer[0];
                            if (first == 'д')
                            {
                                var userSteamAccount = new UserSteamAccount
                                {
                                    DiscordID = user.Id,
                                    SteamID   = steamID
                                };

                                users.Insert(userSteamAccount);
                                users.EnsureIndex(x => x.DiscordID);

                                await ReplyAsync("Вы были успешно зарегистрированы!");
                            }
                            else if (first == 'н')
                            {
                                await ReplyAsync("Попробуйте ввести Steam32ID снова");

                                goto ParseResponse;
                            }
                        }
                        else
                        {
                            await ReplyAsync("Прошло слишком много времени. Начните регистрацию заново.");
                        }
                    }
                    else
                    {
                        await ReplyAsync("Неправильный ввод, попробуйте ввести Steam32ID снова");

                        goto ParseResponse;
                    }
                }
                else
                {
                    await ReplyAsync("Прошло слишком много времени. Начните регистрацию заново.");
                }
            }
        }