Пример #1
0
        public async Task SendAsync(string id, [Remainder] string message)
        {
            var isEmbed = RiasUtilities.TryParseEmbed(message, out var embed);

            if (id.StartsWith("c:", StringComparison.InvariantCultureIgnoreCase))
            {
                CachedChannel channel;
                if (Snowflake.TryParse(id[2..], out var channelId))
Пример #2
0
        private async Task SendGreetMessageAsync(GuildsEntity guildDb, CachedMember member)
        {
            if (guildDb is null)
            {
                return;
            }
            if (!guildDb.GreetNotification)
            {
                return;
            }
            if (string.IsNullOrEmpty(guildDb.GreetMessage))
            {
                return;
            }
            if (guildDb.GreetWebhookId == 0)
            {
                return;
            }

            var guild         = member.Guild;
            var currentMember = guild.CurrentMember;

            if (!currentMember.Permissions.ManageWebhooks)
            {
                return;
            }

            var guildWebhook = await guild.GetWebhookAsync(guildDb.GreetWebhookId);

            if (_webhooks.TryGetValue(guildDb.GreetWebhookId, out var webhook))
            {
                if (guildWebhook is null)
                {
                    _webhooks.TryRemove(guildDb.GreetWebhookId, out _);
                    webhook.Dispose();
                    await DisableGreetAsync(guild);

                    return;
                }
            }
            else
            {
                if (guildWebhook != null)
                {
                    webhook = new RestWebhookClient(guildWebhook);
                    _webhooks.TryAdd(guildWebhook.Id, webhook);
                }
                else
                {
                    await DisableGreetAsync(guild);

                    return;
                }
            }

            if (webhook is null)
            {
                return;
            }

            var greetMsg = ReplacePlaceholders(member, guildDb.GreetMessage);

            if (RiasUtilities.TryParseEmbed(greetMsg, out var embed))
            {
                await webhook.ExecuteAsync(embeds : new[] { embed.Build() });
            }
            else
            {
                await webhook.ExecuteAsync(greetMsg);
            }
        }