Exemplo n.º 1
0
 private async Task OnChannelPinsUpdated(ChannelPinsUpdateEventArgs e)
 {
     if (ChannelPinsUpdated != null)
     {
         await ChannelPinsUpdated(e);
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Checks channel's number of pinned posts and responds with a warning if close to 50 pins.
        /// Warning threshold is defined in <see cref="PinWarningThreshold"/>.
        /// </summary>
        /// <param name="args">Event args.</param>
        /// <returns>Task.</returns>
        private async Task OnChannelPinsUpdatedAsync(DiscordClient dClient, ChannelPinsUpdateEventArgs args)
        {
            int pinCount = (await args.Channel.GetPinnedMessagesAsync()).Count;

            if (pinCount >= PinWarningThreshold)
            {
                await args.Channel.SendMessageAsync($"Approaching the pinned message limit [{pinCount}/50]!");
            }
        }
Exemplo n.º 3
0
        private async Task Client_ChannelPinsUpdated(ChannelPinsUpdateEventArgs e)
        {
            if (e.Channel.Guild != null)
            {
                GuildData d = new HackBanCommand().GetData <GuildData>(e.Channel.GuildId.ToString());

                await UpdatePinsAsync(e.LastPinTimestamp, e.Channel, d, e.Client);

                new HackBanCommand().SetData(e.Channel.GuildId.ToString(), d);
            }
        }
Exemplo n.º 4
0
        public async Task Bot_PinsUpdated(ChannelPinsUpdateEventArgs e)
        {
            var test = e.Channel.GetPinnedMessagesAsync().Result.Count;

            await e.Channel.SendMessageAsync(test.ToString());

            /*e.Channel.CloneAsync();
             * e.Channel.ModifyAsync(channel => channel.Name="");*/

            if (test == 50)
            {
                await e.Channel.SendMessageAsync("Channel out of pins!");
            }
        }
Exemplo n.º 5
0
        private async Task ChannelPinsUpdated(DiscordClient sender, ChannelPinsUpdateEventArgs e)
        {
            var pinEntry = await GetNewEntryAsync() as DiscordAuditLogMessagePinEntry;

            _entryBuilder = EmbedBuilderExtensions.CreateForAudit(pinEntry);
            var action = pinEntry.ActionType == AuditLogActionType.MessagePin ? "Закрепление" : "Открепление";

            _entryBuilder.SetTitle(action + " сообщения");
            _entryBuilder.SetDescription($"{action} сообщения в канале {pinEntry.Channel.Name}");
            var msg = await pinEntry.Channel.GetMessageAsync(pinEntry.Message.Id);

            _entryBuilder.AddMesage(msg);
            _entryBuilder.AddField("Прямая ссылка", msg.JumpLink.AbsoluteUri);

            await SendMessageToAuditAsync(embed : _entryBuilder);
        }
Exemplo n.º 6
0
        private async Task Client_ChannelPinsUpdated(ChannelPinsUpdateEventArgs e)
        {
            if (e.Channel.Guild == null)
            {
                return;
            }

            using (_services.CreateScope())
            {
                var db   = _services.GetService <PinsDbContext>();
                var info = await db.Guilds
                           .Include(p => p.PinnedMessages)
                           .FirstOrDefaultAsync(b => b.Id == (long)e.Channel.Guild.Id);

                if (info == null)
                {
                    _logger.LogInformation("Ignoring pins update for {0} because the guild isn't in the database.", e.Channel);
                    return;
                }

                if (e.Channel.IsNSFW && !info.IncludeNSFW)
                {
                    _logger.LogInformation("Ignoring pins update for {0} because it's marked as NSFW.", e.Channel);
                    return;
                }

                var hook = _webhookClient.GetRegisteredWebhook((ulong)info.WebhookId);
                if (hook == null)
                {
                    _logger.LogInformation("Ignoring pins update for {0} because the webhook is unavailable.", e.Channel);
                    return;
                }

                var pins = await e.Channel.GetPinnedMessagesAsync();

                var newPins = pins.Reverse().Where(p => !info.PinnedMessages.Any(m => m.Id == (long)p.Id));
                foreach (var pin in newPins)
                {
                    await CopyPinAsync(hook, pin, info, db);
                }

                await db.SaveChangesAsync();
            }
        }
Exemplo n.º 7
0
 private Task Client_ChannelPinsUpdated(ChannelPinsUpdateEventArgs e)
 => this._channelPinsUpdated.InvokeAsync(e);
Exemplo n.º 8
0
 private async Task Client_PinsUpdated(ChannelPinsUpdateEventArgs e)
 {
     await e.Channel.SendMessageAsync("@everyone, New pin created!");
 }
Exemplo n.º 9
0
 private Task Client_ChannelPinsUpdated(ChannelPinsUpdateEventArgs e)
 {
     e.Client.DebugLogger.LogMessage(LogLevel.Info, "BotApp",
                                     $"New pin on {e.Channel.Name} ({e.Channel.Guild.Name})", DateTime.Now);
     return(Task.CompletedTask);
 }
Exemplo n.º 10
0
 private Task Event_ChannelPinsUpdated(DiscordClient d, ChannelPinsUpdateEventArgs e)
 {
     d.Logger.LogDebug(BotEventId, "Event_ChannelPinsUpdated.");
     return(Task.CompletedTask);
 }
Exemplo n.º 11
0
        public static async Task ChannelPinsUpdateEventHandlerAsync(TheGodfatherShard shard, ChannelPinsUpdateEventArgs e)
        {
            DiscordChannel logchn = shard.SharedData.GetLogChannelForGuild(shard.Client, e.Channel.Guild);

            if (logchn == null)
            {
                return;
            }

            if (await shard.DatabaseService.IsExemptedAsync(e.Channel.Guild.Id, e.Channel.Id, EntityType.Channel))
            {
                return;
            }

            DiscordEmbedBuilder emb = FormEmbedBuilder(EventOrigin.Channel, "Channel pins updated", e.Channel.ToString());

            emb.AddField("Channel", e.Channel.Mention, inline: true);

            var pinned = await e.Channel.GetPinnedMessagesAsync();

            if (pinned.Any())
            {
                emb.WithDescription(Formatter.MaskedUrl("Jump to top pin", pinned.First().JumpLink));
                string content = string.IsNullOrWhiteSpace(pinned.First().Content) ? "<embedded message>" : pinned.First().Content;
                emb.AddField("Top pin content", Formatter.BlockCode(Formatter.Sanitize(content.Truncate(1000))));
            }
            if (e.LastPinTimestamp != null)
            {
                emb.AddField("Last pin timestamp", e.LastPinTimestamp.Value.ToUtcTimestamp(), inline: true);
            }

            await logchn.SendMessageAsync(embed : emb.Build());
        }