Example #1
0
        public async Task CallTransactionMadeEventAsync(IDiscordGuildChannel m, User receiver, User giver, int amount)
        {
            try
            {
                TransactionPacket p = new TransactionPacket();
                p.discordChannel = m;
                p.discordUser    = await m.GetUserAsync(receiver.Id.FromDbLong());

                if (giver != null)
                {
                    p.giver = giver;
                }

                p.receiver = receiver;

                p.amount = amount;

                if (OnTransaction != null)
                {
                    await OnTransaction?.Invoke(p);
                }
            }
            catch (Exception e)
            {
                Log.Warning($"Achievement check failed: {e.ToString()}");
            }
        }
        public static GuildPermission GetOverwritePermissions(
            IDiscordGuildUser user, IDiscordGuildChannel channel, GuildPermission basePermissions)
        {
            var permissions = basePermissions;

            if (permissions.HasFlag(GuildPermission.Administrator))
            {
                return(GuildPermission.All);
            }

            if (channel.PermissionOverwrites != null)
            {
                PermissionOverwrite overwriteEveryone = channel.PermissionOverwrites
                                                        .FirstOrDefault(x => x.Id == channel.GuildId);

                if (overwriteEveryone != null)
                {
                    permissions &= ~overwriteEveryone.DeniedPermissions;
                    permissions |= overwriteEveryone.AllowedPermissions;
                }

                PermissionOverwrite overwrites = new PermissionOverwrite();

                if (user.RoleIds != null)
                {
                    foreach (ulong roleId in user.RoleIds)
                    {
                        PermissionOverwrite roleOverwrites = channel.PermissionOverwrites
                                                             .FirstOrDefault(x => x.Id == roleId);

                        if (roleOverwrites != null)
                        {
                            overwrites.AllowedPermissions |= roleOverwrites.AllowedPermissions;
                            overwrites.DeniedPermissions  &= roleOverwrites.DeniedPermissions;
                        }
                    }
                }

                permissions &= ~overwrites.DeniedPermissions;
                permissions |= overwrites.AllowedPermissions;

                PermissionOverwrite userOverwrite = channel.PermissionOverwrites
                                                    .FirstOrDefault(x => x.Id == user.Id);

                if (userOverwrite != null)
                {
                    permissions &= ~userOverwrite.DeniedPermissions;
                    permissions |= userOverwrite.AllowedPermissions;
                }
            }

            return(permissions);
        }
Example #3
0
        public async Task <string> Print(int currentValue, IDiscordGuild g, IDiscordGuildChannel c)
        {
            string output = "";

            IDiscordGuildUser u = await g.GetSelfAsync();

            if (!(await c.GetPermissionsAsync(u)).HasFlag(GuildPermission.UseExternalEmojis))
            {
                return("");
            }

            int iteration        = MaxValue / Width;
            int currentIteration = iteration;

            for (int i = 0; i < Width; i++)
            {
                output           += (currentValue >= currentIteration) ? ValueOn.GetAppropriateSection(0, Width - 1, i) : ValueOff.GetAppropriateSection(0, Width - 1, i);
                currentIteration += iteration;
            }

            return(output);
        }
 public static Task <bool> HasChannelPermissionAsync(this IPermissionManager manager, IDiscordGuildChannel channel, string permissionName)
 => manager.HasChannelPermissionAsync(channel.Id, permissionName, channel.GuildId);
 public static Task <bool> RevokeChannelPermissionAsync(this IPermissionManager manager, IDiscordGuildChannel channel, string permissionName)
 => manager.SetChannelPermissionAsync(channel.GuildId, channel.Id, permissionName, false);