コード例 #1
0
        public ReactionRoleService([NotNull] DiscordSocketClient discordClient,
                                   [NotNull] ILogger <ReactionRoleService> logger, [NotNull] IDiscordServerLogBuilder serverLogBuilder,
                                   [NotNull] IEnumerable <ReactionRole> reactionRoles)
        {
            DiscordClient    = discordClient ?? throw new ArgumentNullException(nameof(discordClient));
            Logger           = logger ?? throw new ArgumentNullException(nameof(logger));
            ServerLogBuilder = serverLogBuilder;
            if (reactionRoles is null)
            {
                throw new ArgumentNullException(nameof(reactionRoles));
            }
            DiscordClient.ReactionAdded   += OnReactionAdded;
            DiscordClient.ReactionRemoved += OnReactionRemoved;

            MonitoredReactions =
                reactionRoles
                .GroupBy(x => x.MessageId)
                .ToDictionary(group => group.Key, group =>
                              group.ToDictionary(
                                  x => x.EmoteName,
                                  x => x));
        }
コード例 #2
0
 public static async Task LogErrorToServerAsync(this SocketGuild @this,
                                                DiscordServerConfiguration serverConfig,
                                                IDiscordServerLogBuilder embedBuilder)
 {
     await LogToServerAsync(@this, DiscordServerLogLevel.Error, serverConfig, embedBuilder);
 }
コード例 #3
0
        public static async Task LogToServerAsync(this SocketGuild @this, DiscordServerLogLevel logLevel, DiscordServerConfiguration serverConfig, IDiscordServerLogBuilder embedBuilder)
        {
            if (!serverConfig.LogToServer || logLevel < serverConfig.LogLevel)
            {
                return;
            }

            var channel = @this.GetTextChannel(serverConfig.ServerLogChannelId);

            if (channel is null)
            {
                return;
            }

            await channel.SendMessageAsync("", false, embedBuilder.Build());
        }
コード例 #4
0
 public ReactionRoleService([NotNull] DiscordSocketClient discordClient, [NotNull] ILogger <ReactionRoleService> logger, [NotNull] IDiscordServerLogBuilder serverLogBuilder) : this(
         discordClient, logger, serverLogBuilder, Enumerable.Empty <ReactionRole>())
 {
 }