private async Task JoinedGuildHandler(SocketGuild guild) { DiscordServer saved = _main.ServerList.FirstOrDefault(x => x.ServerId == guild.Id); if (saved != null) { saved.Active = true; } else { DiscordServer newServer = new DiscordServer() { Active = true, ServerName = guild.Name, ServerId = guild.Id, Prefix = PrefixChar.None, ServerJoined = DateTime.Now.ToString() }; App.Current.Dispatcher.Invoke((Action) delegate { _main.ServerList.Add(newServer); }); } BotFrame.SaveFile("servers"); _main.ServerList.Clear(); BotFrame.LoadFile("servers"); }
public async Task StreamerHandler(DiscordServer server) { server.StreamerCheckElapsed = 0; foreach (var streamer in server.StreamerList) { var guild = _client.Guilds.FirstOrDefault(x => x.Id == server.ServerId); var streamRole = guild.Roles.FirstOrDefault(x => x.Id == server.StreamingRole); var channel = guild.Channels.FirstOrDefault(x => x.Id == server.StreamPostChannel) as ISocketMessageChannel; var user = guild.Users.FirstOrDefault(x => x.Id == streamer.DiscordId); var stream = await _api.V5.Streams.GetStreamByUserAsync((await _api.V5.Users.GetUserByNameAsync(streamer.TwitchName)).Matches[0].Id); if (stream.Stream == null)//not streaming { if (streamer.Streaming) { streamer.Game = ""; streamer.Streaming = false; if (server.StreamingRole != 0 && streamer.GiveRole && user.Roles.Contains(streamRole)) { await user.RemoveRoleAsync(streamRole); } BotFrame.SaveFile("servers"); } continue; } if (!streamer.Streaming)//not marked { streamer.Streaming = true; if (server.StreamingRole != 0 && streamer.GiveRole && !user.Roles.Contains(streamRole)) { await user.AddRoleAsync(streamRole); } } if (stream.Stream.Channel.Game != streamer.Game) { streamer.Game = stream.Stream.Channel.Game; if (server.StreamPostChannel != 0 && streamer.AutoPost) { BotFrame.StreamPost(channel, user, stream.Stream, (int)streamer.Mention); } BotFrame.SaveFile("servers"); } } }
private async Task ServerCheck() { if (_client == null) { return; } foreach (var connectedGuild in _client.Guilds) { DiscordServer saved = ServerList.FirstOrDefault(x => x.ServerId == connectedGuild.Id); if (saved != null) { if (!saved.Active) { saved.Active = true; } } else { DiscordServer newServer = new DiscordServer() { Active = true, ServerName = connectedGuild.Name, ServerId = connectedGuild.Id, Prefix = PrefixChar.None, ServerJoined = DateTime.Now.ToString() }; ServerList.Add(newServer); } } foreach (var savedGuild in ServerList.Where(x => x.Active)) { var check = _client.Guilds.FirstOrDefault(x => x.Id == savedGuild.ServerId); if (check == null) { savedGuild.Active = false; } } BotFrame.SaveFile("servers"); ServerList.Clear(); BotFrame.LoadFile("servers"); }
private async Task ReactionAddedHandler(Discord.Cacheable <Discord.IUserMessage, ulong> userMessage, ISocketMessageChannel messageChannel, SocketReaction reaction) { SocketGuildChannel guildChannel = messageChannel as SocketGuildChannel; SocketGuildUser user = guildChannel.Guild.Users.FirstOrDefault(x => x.Id == reaction.UserId); DiscordServer server = _main.ServerList.FirstOrDefault(x => x.ServerId == guildChannel.Guild.Id); if (server == null || user == null) { return; } //Reaction Locks foreach (var reactionLock in server.ReactionLockList.Where(x => x.ChannelId == guildChannel.Id && x.MessageId == userMessage.Id)) { if (reactionLock.Emote == reaction.Emote.ToString()) { var giveRole = guildChannel.Guild.Roles.FirstOrDefault(x => x.Id == reactionLock.GiveRole); var takeRole = guildChannel.Guild.Roles.FirstOrDefault(x => x.Id == reactionLock.TakeRole); if (giveRole == null) { return; } if (!user.Roles.Contains(giveRole)) { BotFrame.consoleOut($"Adding role @{giveRole} to user {user} in server {guildChannel.Guild.Name}"); await user.AddRoleAsync(giveRole); if (takeRole != null) { BotFrame.consoleOut($"Removing role @{takeRole} from user {user} in server {guildChannel.Guild.Name}"); await user.RemoveRoleAsync(takeRole); } } } } //-------------- }