Exemplo n.º 1
0
        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");
        }
Exemplo n.º 2
0
        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");
                }
            }
        }
Exemplo n.º 3
0
 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");
 }
Exemplo n.º 4
0
        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);
                        }
                    }
                }
            }
            //--------------
        }