private async Task _client_JoinedGuild(SocketGuild guild) { // 서버 입장 시 권한 확인 GuildPermissions permission = guild.GetUser(_client.CurrentUser.Id).GuildPermissions; try { // 관리자 권한이 있는지 확인 if (permission.Administrator) { await guild.DefaultChannel.SendMessageAsync(_client.CurrentUser.Mention + "를 초대해주셔서 감사합니다.\n**>help**를 입력하여 도움말을 보실 수 있습니다."); SocketTextChannel osuTrackerChannel = await guild.CreateChannelIfNotExist("osu-tracker"); } else { await guild.DefaultChannel.SendMessageAsync("https://discord.com/api/oauth2/authorize?client_id=755681499214381136&permissions=8&scope=bot"); await guild.DefaultChannel.SendMessageAsync(_client.CurrentUser.Mention + "은(는) **관리자 권한**이 필요합니다.\n권한이 부족해 서버에서 내보냅니다, 다시 초대해주세요."); await guild.LeaveAsync(); } } catch (Exception e) { Console.WriteLine(e.Message); } }
public async Task CheckNewBest() { DataTable userTable = Sql.Get("SELECT user_id FROM targets GROUP BY user_id"); // 타겟 유저 마다 검사 foreach (DataRow userRow in userTable.Rows) { try { UserBest userBest; User user = User.Search((int)userRow["user_id"]); // 이전 pp 기록이 있는지 확인 DataTable ppHistorySearchTable = Sql.Get( "SELECT p.user_id FROM pphistories p, targets t " + "WHERE p.user_id = {0} AND p.user_id = t.user_id", user.user_id ); // 이전 pp 기록이 없을 경우 새로 삽입하고 다음 타겟 검사 if (ppHistorySearchTable.Rows.Count == 0) { userBest = new UserBest(user.user_id); Sql.Execute("INSERT INTO pphistories VALUES ({0}, {1}, {2}, {3})", user.user_id, userBest.pp_sum, user.pp_raw, user.pp_rank); continue; } double previous_pp_raw = Convert.ToDouble(Sql.Get("SELECT pp_raw FROM pphistories WHERE user_id = {0}", user.user_id).Rows[0]["pp_raw"]); // pp 변화가 없을 경우 다음 타겟 검사 if (previous_pp_raw.IsCloseTo(user.pp_raw)) { continue; } // pp 변화가 있을 경우 새로운 베퍼포가 있는지 확인 userBest = new UserBest(user.user_id); userBest.GetNewBest(); // 새로운 베퍼포가 없을 경우 다음 타겟 검사 if (userBest.newBest == null) { continue; } ScoreEmbed scoreEmbed = new ScoreEmbed(userBest); DataTable guildTable = Sql.Get("SELECT guild_id FROM targets WHERE user_id = '{0}'", user.user_id); foreach (DataRow guildRow in guildTable.Rows) { ulong guild_id = ulong.Parse(guildRow["guild_id"].ToString()); SocketGuild guild = _client.GetGuild(guild_id); try { SocketTextChannel osuTrackerChannel = await guild.CreateChannelIfNotExist("osu-tracker"); await osuTrackerChannel.SendMessageAsync(embed : scoreEmbed.Build()); } catch (Exception e) { Console.WriteLine(e.Message); } } } catch (Exception e) { Console.WriteLine(e.Message); } Console.WriteLine(userRow["user_id"]); } Sql.Execute("DELETE FROM pphistories WHERE user_id NOT IN (SELECT user_id FROM targets)"); await Task.Factory.StartNew(() => CheckNewBest()); }