Task Client_GuildMemberAdded(DiscordClient client, GuildMemberAddEventArgs e)
        {
            _ = Task.Run(async() =>
            {
                using var scope = ServiceScopeFactory.CreateScope();

                var dbContext = scope.ServiceProvider.GetService <InciteDbContext>();
                var user      = dbContext.Users
                                .Include(x => x.Memberships)
                                .ThenInclude(x => x.Guild)
                                .FirstOrDefault(x => x.DiscordId == e.Member.Id);

                Member member = user?.Memberships
                                .FirstOrDefault(x => x.Guild.DiscordId == e.Guild.Id);

                if (member == null)
                {
                    member = new Member()
                    {
                        Guild = await dbContext.Guilds.FirstAsync(x => x.DiscordId == e.Guild.Id),
                        User  = user ?? new User()
                        {
                            DiscordId = e.Member.Id
                        }
                    };

                    dbContext.Members.Add(member);
                    await dbContext.SaveChangesAsync();
                }
            });

            return(Task.CompletedTask);
        }
Beispiel #2
0
        private Task MemberAddedHandler(DiscordClient s, GuildMemberAddEventArgs e)
        {
            // automatically add scrubs role to new users to pacify my OCD
            e.Member.GrantRoleAsync(e.Guild.GetRole(310980088122441728));

            return(Task.CompletedTask);
        }
Beispiel #3
0
        private static async Task Discord_GuildMemberAdded(GuildMemberAddEventArgs e)
        {
            var channel = await e.Member.CreateDmChannelAsync();

            await channel.SendMessageAsync("Welcome to the Insanity Network Discord! Please be sure to read <#693561317352669254> and <#693561343084593222>!");

            if (!File.Exists($"./data/{e.Member.Id}/modlog.xml"))
            {
                Serializer.CreateNew(e.Member.Id, e.Member.Username);
            }

            FileStream    writer     = new FileStream("./data/experience.xml", FileMode.Open);
            XmlSerializer serializer = new XmlSerializer(typeof(List <ExperiencePacket>));

            List <ExperiencePacket> packets = (List <ExperiencePacket>)serializer.Deserialize(writer);

            packets.Add(new ExperiencePacket
            {
                Level      = 0,
                Experience = 0,
                UserID     = e.Member.Id
            });
            packets = packets.OrderByDescending(xm => xm.Level).ThenByDescending(xm => xm.Experience).ToList();

            writer.SetLength(0);
            writer.Flush();

            serializer.Serialize(writer, packets);
            writer.Close();
        }
Beispiel #4
0
        private async Task BloonsideEmbed(DiscordClient dClient, GuildMemberAddEventArgs args)
        {
            DiscordChannel sbgChannel = await this.dClient.GetChannelAsync(SBGChannels.Bloonside);

            // If guild isn't SBG, just ignore this user join event.
            if (args.Guild.Id != Variables.Guilds.SBG)
            {
                return;
            }

            DiscordEmbedBuilder embed = this.BuildEmbed(args.Member);

            using IServiceScope scope = this.provider.CreateScope();
            using AnalyticsContext db = scope.ServiceProvider.GetRequiredService <AnalyticsContext>();
            List <UserEvent> userEvents = await db.UserEvents
                                          .Where(u => u.UserId == args.Member.Id)
                                          .OrderByDescending(u => u.Timestamp)
                                          .Take(10)
                                          .ToListAsync();

            embed.AddField(
                "Events",
                string.Join(
                    "\n",
                    userEvents.Select(u => $"{DiscordEmoji.FromGuildEmote(this.dClient, this.eventEmotes[u.Event])} {u.Event.ToString().PadRight(8, '\u2000')} - {u.Timestamp.ToString("ddd, dd MMM yyyy, hh:mm:ss tt", CultureInfo.InvariantCulture)}")));

            // Post embed to #bloonside
            await sbgChannel.SendMessageAsync(embed);
        }
Beispiel #5
0
        private async Task OnMemberAdded(DiscordClient sender, GuildMemberAddEventArgs e)
        {
            ConfigJson config = await GetConfig();

            DiscordMember daryl = await e.Guild.GetMemberAsync(229594828889915392);

            foreach (DSharpPlus.Entities.DiscordInvite discordInvite in await e.Guild.GetInvitesAsync())
            {
                Console.WriteLine(discordInvite.Code + " => " + discordInvite.Inviter.Username);
                if (discordInvite.Uses == invitesCount[discordInvite.Code])
                {
                    continue;
                }
                DiscordRole role = e.Guild.GetRole(config.InviteRole[discordInvite.Code]);
                try
                {
                    await e.Member.GrantRoleAsync(role);
                }
                catch (Exception exception)
                {
                    await daryl.SendMessageAsync($"Failed to grant {role.Name} to {e.Member.Username} \n Error: {exception.Message}");

                    invitesCount[discordInvite.Code] = discordInvite.Uses;
                    return;
                }
                invitesCount[discordInvite.Code] = discordInvite.Uses;
                await daryl.SendMessageAsync($"Granted {role.Name} to {e.Member.Username}");

                return;
            }
            await daryl.SendMessageAsync($"Failed to grant any roles to {e.Member.Username}");
        }
Beispiel #6
0
        internal static async Task Main(DiscordClient Bot, GuildMemberAddEventArgs MemberObjects)
        {
            Log.Debug("GuildMemberAddEvent " + "Start...");

            GetLanguage Get_Language;
            string      GuildLanguageString = Database.DatabaseMethods.GuildConfigMethods.LanguageFind(MemberObjects.Guild.Id);

            if (GuildLanguageString == null)
            {
                Get_Language = new GetLanguage(Database.Enums.Language.ja_JP);
            }
            else
            {
                if (Enum.TryParse(GuildLanguageString, true, out Database.Enums.Language GuildLanguage))
                {
                    Get_Language = new GetLanguage(GuildLanguage);
                }
                else
                {
                    Get_Language = new GetLanguage(Database.Enums.Language.ja_JP);
                }
            }

            await Fork(Bot, MemberObjects, Get_Language).ConfigureAwait(false);

            Log.Debug("GuildMemberAddEvent " + "End...");
        }
Beispiel #7
0
        public async Task MemberAdd(GuildMemberAddEventArgs e)
        {
            await GreetUser(e);

            await connection.OpenAsync();

            try
            {
                MySqlCommand cmd = new MySqlCommand
                {
                    Connection  = connection,
                    CommandText = $"INSERT INTO `guilds.users` (`userID`, `userName`, `userDiscriminator`, `Birthdate`, `changeDate`) VALUES (?, ?, ?, NULL, CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE userName=userName"
                };
                cmd.Parameters.Add("userID", MySqlDbType.Int64).Value              = e.Member.Id;
                cmd.Parameters.Add("userName", MySqlDbType.VarChar).Value          = e.Member.Username;
                cmd.Parameters.Add("userDiscriminator", MySqlDbType.VarChar).Value = e.Member.Discriminator;
                await cmd.ExecuteNonQueryAsync();

                GuildsList[e.Guild.Id].GuildMembers.Add(e.Member.Id, new Members
                {
                    UserName          = e.Member.Username,
                    UserDiscriminator = e.Member.Discriminator,
                    BdaySent          = false
                });
                await LogActionNoMsg(e.Guild, "MemberAdd", "Fired on member join", $"User {e.Member.Username} joined", DiscordColor.Yellow);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex);
                Console.WriteLine(ex.StackTrace);
            }
            await connection.CloseAsync();
        }
Beispiel #8
0
        public static async Task NewMember(DiscordClient y, GuildMemberAddEventArgs e)
        {
            try
            {
                var data = new Global().GetDBRecords(e.Guild.Id);

                if (e.Member.IsBot)
                {
                    var m = e.Member;
                    var p = Convert.ToUInt64(data.BotAutoRole);
                    var c = e.Member.Guild.GetRole(p);
                    await m.GrantRoleAsync(c);
                }
                else if (e.Member.IsBot == false)
                {
                    var p = Convert.ToUInt64(data.Autorole);
                    var c = e.Member.Guild.GetRole(p);
                    var m = e.Member;
                    await m.GrantRoleAsync(c);
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
                throw;
            }
        }
Beispiel #9
0
        private async Task OnGuildMemberAdded(DiscordClient dClient, GuildMemberAddEventArgs args)
        {
            if (args.Guild.Id != Guilds.SBG || args.Member.IsBot)
            {
                return;
            }

            IServiceScope scope   = this.scopeFactory.CreateScope();
            BloonContext  db      = scope.ServiceProvider.GetRequiredService <BloonContext>();
            List <ulong>  roleIds = await db.RoleMembers.AsNoTracking()
                                    .Where(r => r.MemberId == args.Member.Id)
                                    .Select(r => r.RoleId)
                                    .ToListAsync();

            List <string> addedRoleNames = new List <string>();

            for (int i = 0; i < roleIds.Count; i++)
            {
                if (args.Guild.Roles.TryGetValue(roleIds[i], out DiscordRole role) && role.Position < args.Guild.CurrentMember.Hierarchy)
                {
                    addedRoleNames.Add(role.Name);
                    await args.Member.GrantRoleAsync(role);
                }
            }

            if (addedRoleNames.Count == 0)
            {
                return;
            }

            await args.Guild.GetChannel(SBGChannels.Bloonside)
            .SendMessageAsync($"Granted **{string.Join(", ", addedRoleNames)}** to **{args.Member.Username}**.");
        }
Beispiel #10
0
 private async Task OnGuildMemberAdded(GuildMemberAddEventArgs e)
 {
     if (GuildMemberAdded != null)
     {
         await GuildMemberAdded(e);
     }
 }
    public async Task OnMemberJoinedAsync(DiscordClient _, GuildMemberAddEventArgs e)
    {
        GuildConfig config = await _configRepository.FindOrCreateConfigAsync(e.Member.Guild.Id);

        if (config.JoinLogChannel is not 0)
        {
            _logger.LogDebug("Fetching Joinlog record for user {userId} in guild {guildId}.", e.Member.Id, e.Guild.Id);

            TrustlistUser user = await _client.LookupUserAsync(e.Member.Id);

            TrustlistEntry entry         = user?.GetLatestMaxEntry();
            byte           maxEscalation = user?.GetMaxEscalationLevel() ?? 0;
            DiscordEmbed   entryEmbed    = Utilities.BuildUserRecordEmbed(user, e.Member);

            if (maxEscalation is 0 && config.SuppressJoinlogCleanRecords)
            {
                _logger.LogDebug("Suppressed clean record for user {userId} in guild {guildId}.", e.Member.Id, e.Guild.Id);
            }
            else
            {
                DiscordChannel joinLog = e.Guild.GetChannel(config.JoinLogChannel);
                await joinLog.SendMessageAsync($"User **{e.Member.GetFullUsername()}** ({e.Member.Mention}) has joined the server.", entryEmbed);
            }

            if (maxEscalation >= 3 && config.AutoBanBlacklisted)
            {
                await e.Member.BanAsync(0, $"[SocialGuard] \n{entry.EscalationNote}");

                await e.Guild.GetChannel(config.BanLogChannel is not 0?config.BanLogChannel : config.JoinLogChannel)
                .SendMessageAsync($"User **{e.Member.GetFullUsername()}** ({e.Member.Mention}) banned on server join.", entryEmbed);
            }
        }
Beispiel #12
0
        public static Task Guild_Member_Added(GuildMemberAddEventArgs e)
        {
            e.Member.GrantRoleAsync(e.Guild.Roles[2]); // TEST
            e.Member.SendMessageAsync($"Welcome to {e.Guild.Name} {e.Member.Mention}. For now you are but a fledgling potato, but soon you may ascend. I am PotatoBot, guardian of this land. Fear my wrath.");

            return(Task.CompletedTask);
        }
Beispiel #13
0
        private async Task Discord_GuildMemberAdded(GuildMemberAddEventArgs e)
        {
            if (e.Guild == RPClass.RPGuild)
            {
                DiscordEmbedBuilder b = new DiscordEmbedBuilder()
                                        .AddField($"Welcome, {e.Member.Username}!",
                                                  $@"Welcome to the Heroes & Villains Discord Server, {e.Member.Mention}!
First things first, please read the <#511221485004783618> to see how we run things here.
Once you've done that, then head over to <#463498007514710016> to get some help for your OC and ask for an approval channel.
To learn more about the lore and the Server, then browse through <#366574305418543105> or head over to our Wiki and have a look through the pages!

https://roleplay-heroes-and-villains.wikia.com/wiki/Role-Play:_Heroes_and_Villains_Wiki

We hope you enjoy your stay!")
                                        .WithFooter("Heroes & Villains Discord Server").WithColor(DiscordColor.CornflowerBlue);

                await e.Member.SendMessageAsync("", embed : b);

                await e.Guild.Channels.First(x => x.Id == 312918289988976653).SendMessageAsync("", embed: b);

                DiscordEmbedBuilder c = new DiscordEmbedBuilder
                {
                    Title = "Member Joined",
                    Color = DiscordColor.Green
                }
                .AddField("Member", e.Member.DisplayName + "#" + e.Member.Discriminator + " (" + e.Member.Id + ")", true)
                .AddField("Timestamp", e.Member.JoinedAt.ToString(), true);

                await e.Guild.GetChannel(392429153909080065).SendMessageAsync(embed: c);
            }
        }
Beispiel #14
0
        public static async Task OnGuildMemberAdded(DiscordClient client, GuildMemberAddEventArgs e)
        {
            if (e.Guild.Id != Config.serverID)
            {
                return;
            }

            // Check if user has registered their Github account
            if (!Database.TryGetSponsor(e.Member.Id, out Database.SponsorEntry sponsorEntry))
            {
                return;
            }

            // Check if user is active sponsor
            List <Github.Sponsor> sponsors = await Github.GetSponsors();

            Github.Sponsor sponsor = sponsors.FirstOrDefault(s => s.sponsor.id == sponsorEntry.githubID);
            if (sponsor == null)
            {
                return;
            }

            // Check if tier is registered in the config
            if (!Config.TryGetTierRole(sponsor.dollarAmount, out ulong roleID))
            {
                return;
            }

            // Assign role
            DiscordRole role = e.Guild.GetRole(roleID);

            Logger.Log(LogID.Discord, Utils.FullName(e.Member) + " (" + e.Member.Id + ") were given back the role '" + role.Name + "' on rejoin. ");
            await e.Member.GrantRoleAsync(role);
        }
Beispiel #15
0
        private static async Task DenyUserProcess(DiscordClient Bot, GuildMemberAddEventArgs MemberObjects, GetLanguage Get_Language)
        {
            await MemberObjects.Member.SendMessageAsync(Get_Language.Language_Data.PermissionDenied);

            await MemberObjects.Member.RemoveAsync(Get_Language.Language_Data.NotAccessed);

            ulong Guild_ChannelID = Database.DatabaseMethods.GuildConfigMethods.LogChannelFind(MemberObjects.Guild.Id);

            if (Guild_ChannelID != 0)
            {
                DiscordChannel GuildLogChannel = MemberObjects.Guild.GetChannel(Guild_ChannelID);
                DiscordEmbed   LogChannelEmbed = new Discord​Embed​Builder()
                                                 .WithTitle(Get_Language.Language_Data.AccessDenied)
                                                 .WithDescription(
                    string.Format(
                        Get_Language.Language_Data.Bot_BanDescription,
                        MemberObjects.Member.Username + "#" + MemberObjects.Member.Discriminator,
                        MemberObjects.Member.Id
                        )
                    )
                                                 .WithColor(new DiscordColor(0xFF4B00))
                                                 .WithTimestamp(DateTime.Now)
                                                 .WithFooter(
                    string.Format("{0} Bot", Bot.CurrentUser.Username)
                    )
                                                 .WithAuthor(Get_Language.Language_Data.NotAccessed);
                await GuildLogChannel.SendMessageAsync(LogChannelEmbed);
            }
            else
            {
                Log.Warning("Could not send from log channel");
            }

            Log.Debug($"{MemberObjects.Member.Username + "#" + MemberObjects.Member.Discriminator} is not allowed join");
        }
Beispiel #16
0
        private async Task Client_GuildMemberAdded(GuildMemberAddEventArgs e)
        {
            _logger.Trace($"FilterBot::Client_GuildMemberAdded [Guild={e.Guild.Name}, Username={e.Member.Username}]");

            if (_config.NotifyNewMemberJoined)
            {
                var channel = await _client.GetChannel(_config.CommandsChannelId);

                if (channel == null)
                {
                    _logger.Error($"Failed to find channel with id {_config.CommandsChannelId}.");
                    return;
                }

                await channel.SendMessageAsync($"Everyone let's welcome {e.Member.Mention} to the server! We've been waiting for you!");
            }

            if (_config.AssignNewMembersCityRoles)
            {
                _client.AssignMemberRoles(e.Member, _config.CityRoles);
            }

            if (_config.SendWelcomeMessage)
            {
                await _client.SendWelcomeMessage(e.Member, _config.WelcomeMessage);
            }
        }
Beispiel #17
0
        private static async Task Fork(DiscordClient Bot, GuildMemberAddEventArgs MemberObjects, GetLanguage Get_Language)
        {
            if (!Database.DatabaseMethods.GuildConfigMethods.WhitelistFind(MemberObjects.Guild.Id))
            {
                Log.Info("Whitelist Disabled");
                return;
            }
            if (MemberObjects.Member.IsBot)
            {
                await BotProcess(Bot, MemberObjects, Get_Language).ConfigureAwait(false);

                return;
            }

            if (Database.DatabaseMethods.AllowUsersMethods.AllowUserFind(MemberObjects.Guild.Id, MemberObjects.Member.Id, out AllowUsers DBAllowUserID))
            {
                await AllowUserProcess(Bot, MemberObjects, Get_Language, DBAllowUserID).ConfigureAwait(false);

                return;
            }
            else               // if DBAllowUserID is null, processes will not be executed from here. And kick.
            {
                await DenyUserProcess(Bot, MemberObjects, Get_Language).ConfigureAwait(false);

                return;
            }
        }
Beispiel #18
0
        private Task _discordClient_UserJoined(DiscordClient sender, GuildMemberAddEventArgs e)
        {
            _ = Task.Run(async() =>
            {
                // Haven't set the config
                if (_config.JoinLogChannel == default)
                {
                    return;
                }

                _joinLogChannel ??= _discordClient.FindChannel(_config.JoinLogChannel);

                // Invalid channel ID
                if (_joinLogChannel == null)
                {
                    return;
                }

                var accountAge        = DateTimeOffset.UtcNow - e.Member.CreationTimestamp.UtcDateTime;
                var userJoinedMessage = await _joinLogChannel.SendMessageAsync(
                    $"{e.Member.Mention} {Formatter.Sanitize(e.Member.Username.RemoveControlChars())}#{e.Member.Discriminator} joined, account was created {accountAge.ToPrettyFormat()} ago");

                await WarnIfNewAccountAsync(userJoinedMessage, accountAge);
                await WarnIfDuplicatedNewAccountAsync(e.Member);
            });

            return(Task.CompletedTask);
        }
Beispiel #19
0
        private Task GuildMemberAdded(GuildMemberAddEventArgs e)
        {
            var joinedLeftEventId = _redis.StringGet($"{e.Guild.Id}:Logs:JoinedLeftEvent");

            var guild  = e.Guild;
            var member = e.Member;

            if (!string.IsNullOrWhiteSpace(joinedLeftEventId))
            {
                var logChannel  = guild.GetChannel((ulong)joinedLeftEventId);
                var avatarUrl   = member.AvatarUrl;
                var title       = ":inbox_tray: Member joined";
                var description = new StringBuilder().AppendLine($"Username: `{member.GetUsertag()}`").AppendLine($"User identity: `{member.Id}`").AppendLine($"Registered: {member.CreatedAtLongDateTimeString().Result}").ToString();

                var footer = new DiscordEmbedBuilder.EmbedFooter
                {
                    Text = $"Member Id: {member.Id}"
                };

                logChannel.SendEmbedMessageAsync(title, description, DiscordColor.SpringGreen, thumbnailUrl: avatarUrl, footer: footer, timestamp: DateTimeOffset.UtcNow);
            }

            _logger.Information($"'{e.Member.GetUsertag()}' ({e.Member.Id}) has joined the guild '{e.Guild.Name}' ({e.Guild.Id}).");

            return(Task.CompletedTask);
        }
Beispiel #20
0
 public static async Task Welcome_Member(object Client, GuildMemberAddEventArgs e)
 {
     _ = Task.Run(async() =>
     {
         var WelcomeSettings = DB.DBLists.ServerWelcomeSettings.FirstOrDefault(w => w.Server_ID == e.Guild.Id);
         var JoinRole        = (from rr in DB.DBLists.RankRoles
                                where rr.Server_ID == e.Guild.Id
                                where rr.Server_Rank == 0
                                select rr).FirstOrDefault();
         if (WelcomeSettings.Channel_ID != 0 && !WelcomeSettings.HasScreening)
         {
             DiscordChannel WelcomeChannel = e.Guild.GetChannel(Convert.ToUInt64(WelcomeSettings.Channel_ID));
             if (WelcomeSettings.Welcome_Message != null)
             {
                 string msg = WelcomeSettings.Welcome_Message;
                 msg        = msg.Replace("$Mention", $"{e.Member.Mention}");
                 await WelcomeChannel.SendMessageAsync(msg);
                 if (JoinRole != null)
                 {
                     DiscordRole role = e.Guild.GetRole(Convert.ToUInt64(JoinRole.Role_ID));
                     await e.Member.GrantRoleAsync(role);
                 }
             }
         }
     });
     await Task.Delay(1);
 }
        public async Task HandleMemberJoinAsync(GuildMemberAddEventArgs e, AntifloodSettings settings)
        {
            if (!this.guildFloodUsers.ContainsKey(e.Guild.Id) && !this.TryAddGuildToWatch(e.Guild.Id))
            {
                throw new ConcurrentOperationException("Failed to add guild to antiflood watch list!");
            }

            if (!this.guildFloodUsers[e.Guild.Id].Add(e.Member))
            {
                throw new ConcurrentOperationException("Failed to add member to antiflood watch list!");
            }

            if (this.guildFloodUsers[e.Guild.Id].Count >= settings.Sensitivity)
            {
                foreach (DiscordMember m in this.guildFloodUsers[e.Guild.Id])
                {
                    await this.PunishMemberAsync(e.Guild, m, settings.Action);

                    await Task.Delay(TimeSpan.FromMilliseconds(100));
                }
                this.guildFloodUsers[e.Guild.Id].Clear();
                return;
            }

            await Task.Delay(TimeSpan.FromSeconds(settings.Cooldown));

            if (this.guildFloodUsers.ContainsKey(e.Guild.Id) && !this.guildFloodUsers[e.Guild.Id].TryRemove(e.Member))
            {
                throw new ConcurrentOperationException("Failed to remove member from antiflood watch list!");
            }
        }
        public async Task AddJoinUser(GuildMemberAddEventArgs e)
        {
            try
            {
                var guildId = GetGuildIdByUid(e.Guild.Id);
                await connection.OpenAsync();

                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection  = connection;
                cmd.CommandText = $"INSERT INTO `guilds.users` (discordId, discordName, guildId, notes) "
                                  + $" values (?, ?, ?, 'auto add') "
                                  + $" ON DUPLICATE KEY UPDATE discordId=discordId";
                cmd.Parameters.Add("discordId", MySqlDbType.VarChar).Value   = Convert.ToString(e.Member.Id);
                cmd.Parameters.Add("discordName", MySqlDbType.VarChar).Value = Convert.ToString(e.Member.Username);
                cmd.Parameters.Add("guildId", MySqlDbType.Int16).Value       = guildId;
                await cmd.ExecuteNonQueryAsync();

                await connection.CloseAsync();
            }
            catch (Exception ey)
            {
                Console.WriteLine("Error: " + ey);
                Console.WriteLine(ey.StackTrace);
            }
            Console.WriteLine("UserAdd done!");
        }
Beispiel #23
0
        internal async Task OnMemberAdded(DiscordClient client, GuildMemberAddEventArgs e)
        {
            if (!Database.TryGetOpenTickets(e.Member.Id, out List <Database.Ticket> ownTickets))
            {
                return;
            }

            foreach (Database.Ticket ticket in ownTickets)
            {
                try
                {
                    DiscordChannel channel = await client.GetChannelAsync(ticket.channelID);

                    if (channel?.GuildId == e.Guild.Id)
                    {
                        await channel.AddOverwriteAsync(e.Member, Permissions.AccessChannels, Permissions.None);

                        DiscordEmbed message = new DiscordEmbedBuilder()
                                               .WithColor(DiscordColor.Green)
                                               .WithDescription("User '" + e.Member.Username + "#" + e.Member.Discriminator + "' has rejoined the server, and has been re-added to the ticket.");
                        await channel.SendMessageAsync(message);
                    }
                }
                catch (Exception) { }
            }
        }
Beispiel #24
0
 public static async Task <string> ReplaceValues(string message, GuildMemberAddEventArgs e)
 {
     return(await ReplaceValues(message,
                                e.Member.Username,
                                e.Guild.Name,
                                e.Guild.MemberCount.ToString()));
 }
Beispiel #25
0
        /// <summary>
        /// Triggered when an user join a guild
        /// </summary>
        private static async Task GuildMemberAdded(GuildMemberAddEventArgs e)
        {
            var welcome = Guilds[e.Guild.Id].Welcome;

            if (welcome.Channel == null)
            {
                return;
            }

            var channel = e.Guild.GetChannel(ulong.Parse(welcome.Channel));

            if (channel == null)
            {
                return;
            }

            var embed = new DiscordEmbedBuilder()
                        .WithTitle(string.Format(welcome.Header, e.Member.Username))
                        .WithDescription(welcome.Body)
                        .WithColor(new DiscordColor(welcome.Color))
                        .WithThumbnailUrl(e.Member.AvatarUrl)
                        .Build();

            await channel.SendMessageAsync(embed : embed, content : welcome.Mention?e.Member.Mention : null);
        }
Beispiel #26
0
        private async Task StartMember(GuildMemberAddEventArgs e)
        {
            var p = GameBuilder.CreatePerms(Permissions.AccessChannels, Permissions.UseVoice, Permissions.Speak);
            await Global.Game.DiscordChannels[GameChannel.BotVoice].AddOverwriteAsync(e.Member, p);

            Game.WriteDebug($"D : {e.Member.Username}");
        }
Beispiel #27
0
        public async Task AddUserJoinedEventAsync(GuildMemberAddEventArgs args)
        {
            UserEvent userEvent = new UserEvent()
            {
                UserId         = args.Member.Id,
                Username       = args.Member.Username,
                Nickname       = args.Member.Nickname,
                Discriminator  = args.Member.Discriminator,
                AvatarId       = args.Member.AvatarHash.ToString(),
                AccountCreated = args.Member.CreationTimestamp.UtcDateTime,
                Bot            = args.Member.IsBot,
                Event          = Event.Joined,
                Timestamp      = DateTime.Now,
            };

            try
            {
                using IServiceScope scope = this.scopeFactory.CreateScope();
                using AnalyticsContext db = scope.ServiceProvider.GetRequiredService <AnalyticsContext>();
                db.UserEvents.Add(userEvent);
                await db.SaveChangesAsync();
            }
            catch (Exception e)
            {
                Log.Error(e, $"Failed to add new user event {userEvent.Username}#{userEvent.Discriminator} | {userEvent.UserId}");
                return;
            }
        }
Beispiel #28
0
        private async Task OnMemberAdded(GuildMemberAddEventArgs e)
        {
            var   guild          = e.Guild;
            ulong tylerServer    = 380871056757358592;
            ulong gabeTeamServer = 736434039866785900;
            ulong testServer     = 714663062254256218;

            if (guild.Id == tylerServer)
            {
                var roles      = Client.Guilds.Values.FirstOrDefault(x => x.Name == "Tyler's Streaming Discord").Roles.Values;
                var memberRole = roles.First(x => x.Name == "Viewers");
                await e.Member.GrantRoleAsync(memberRole);
            }

            else if (guild.Id == gabeTeamServer)
            {
                var roles      = Client.Guilds.Values.FirstOrDefault(x => x.Name == "Destiny Gods").Roles.Values;
                var memberRole = roles.First(x => x.Name == "shittas");
                await e.Member.GrantRoleAsync(memberRole);
            }

            else if (guild.Id == testServer)
            {
                var roles      = Client.Guilds.Values.FirstOrDefault(x => x.Name == "Bot Testing").Roles.Values;
                var memberRole = roles.First(x => x.Name == "Member");
                await e.Member.GrantRoleAsync(memberRole);
            }
        }
Beispiel #29
0
        private async Task Discord_GuildMemberAdded(GuildMemberAddEventArgs e)
        {
            if (e.Guild == RPClass.RPGuild)
            {
                DiscordEmbedBuilder b = new DiscordEmbedBuilder
                {
                    Title = "Welcome!"
                }
                .AddField("Welcome to the Prometheus RP Server, " + e.Member.Username + "!", @"
Please read " + e.Guild.Channels.First(x => x.Id == 473596208565190659).Mention + @" then go for " + e.Guild.Channels.First(x => x.Id == 472503660174245908).Mention + @", followed by " + e.Guild.Channels.First(x => x.Id == 471840372717387787).Mention + @". 
Then, once you have decided the character(and filled out the template), ask for an approval mod to give you a channel. If you have any questions ask in " + e.Guild.Channels.First(x => x.Id == 472512797096542236).Mention + @".

Hope you enjoy your time here " + e.Member.Mention + "!");

                await e.Member.SendMessageAsync("", embed : b);

                await RPClass.GeneralChannel.SendMessageAsync("", embed : b);

                DiscordEmbedBuilder c = new DiscordEmbedBuilder
                {
                    Title = "Member Joined",
                    Color = DiscordColor.Green
                }
                .AddField("Member", e.Member.DisplayName + "#" + e.Member.Discriminator + " (" + e.Member.Id + ")", true)
                .AddField("Timestamp", e.Member.JoinedAt.ToString(), true);

                await RPClass.LogChannel.SendMessageAsync(embed : c);
            }
        }
Beispiel #30
0
        private Task NewMember(GuildMemberAddEventArgs e)
        {
            if (e.Client != Client)
            {
                var json = "";
                if (!File.Exists("member.json"))
                {
                    using (StreamWriter file = File.CreateText("member.json"))
                    {
                        JsonSerializer serializer = new JsonSerializer();
                        //serialize object directly into file stream
                        serializer.Serialize(file, @"{}");
                    }
                }
                using (var fs = File.OpenRead("member.json"))
                    using (var sr = new StreamReader(fs, new UTF8Encoding(false)))
                        json = sr.ReadToEnd();
                // next, let's load the values from that file
                // to our client's configuration
                //var cfgjson = JsonConvert.DeserializeObject<ConfigMAL>(json);
                var cfgjson = JsonConvert.DeserializeObject <List <ulong> >(json);

                cfgjson.Add(e.Client.CurrentUser.Id);

                using (StreamWriter file = File.CreateText("member.json"))
                {
                    JsonSerializer serializer = new JsonSerializer();
                    //serialize object directly into file stream
                    serializer.Serialize(file, cfgjson);
                }
            }
            return(Task.CompletedTask);
        }