示例#1
0
        public async Task HandleAsync(MemberLeftEventArgs args)
        {
            using var ctx = new AdminDatabaseContext(_provider);
            var guild = await ctx.GetOrCreateGuildAsync(args.Guild.Id);

            if (string.IsNullOrWhiteSpace(guild.Goodbye))
            {
                return;
            }

            var goodbye = await guild.Goodbye.FormatPlaceHoldersAsync(
                AdminCommandContext.MockContext(guild.Language, _provider, args.User, args.Guild));

            if (!(await ctx.GetLoggingChannelAsync(args.Guild.Id, LogType.Goodbye) is { } channel))
            {
                return;
            }

            if (JsonEmbed.TryParse(goodbye, out var embed))
            {
                await channel.SendMessageAsync(embed.Text ?? string.Empty, embed : embed.ToLocalEmbed());

                return;
            }

            await channel.SendMessageAsync(goodbye);
        }
示例#2
0
 public async ValueTask HandleMemberLeft(object sender, MemberLeftEventArgs e)
 {
     foreach (var service in MemberLeftServices)
     {
         await ExecuteAsync((service, e) => service.OnMemberLeft(e), service, e).ConfigureAwait(false);
     }
 }
示例#3
0
        public ValueTask HandleAsync(MemberLeftEventArgs e)
        {
            _bot.Log("MemberLogging", LogSeverity.Information,
                     $"Member {e.User} left guild {e.Guild.Name}.");

            return(new ValueTask());
        }
示例#4
0
        private async Task MemberLeftAsync(MemberLeftEventArgs args)
        {
            if (RiasBot.CurrentUser != null && args.User.Id == RiasBot.CurrentUser.Id)
            {
                return;
            }

            using var scope = RiasBot.CreateScope();
            var db      = scope.ServiceProvider.GetRequiredService <RiasDbContext>();
            var guildDb = await db.Guilds.FirstOrDefaultAsync(g => g.GuildId == args.Guild.Id);

            await SendByeMessageAsync(guildDb, args.User, args.Guild);
        }
 public Task HandleAsync(MemberLeftEventArgs args)
 => LogKickAsync(args.User, args.Guild, null);
 protected internal virtual ValueTask OnMemberLeft(MemberLeftEventArgs e)
 => default;
示例#7
0
 private void HandleMemberLeft(object sender, MemberLeftEventArgs args)
 {
     HandleMessage(args.Member.Host, new UpdateMessage(args.Member));
     UpdateAttemptLimit();
 }