예제 #1
0
        public async Task SendAlerts(DiscordGuild guild, IReadOnlyOperation op, string userName)
        {
            bool isAtLeastOneMissingMember = false;

            ulong[] alertRecipents = GetRecipients();
            string  message        = $"A new \"{op.OperationName}\" event has been posted by {userName} in {guild.Name}.";

            foreach (ulong userId in alertRecipents)
            {
                DiscordMember member;
                try
                {
                    member = await guild.GetMemberAsync(userId);

                    await member.SendMessageAsync(message);
                }
                catch (NotFoundException)
                {
                    lock (this) _alertMembers.Remove(userId);
                    isAtLeastOneMissingMember = true;
                }
            }
            if (isAtLeastOneMissingMember)
            {
                await Save(_alertMembers);
            }
        }
예제 #2
0
        private async Task RepostCommand(MessageCreateEventArgs e, ParsedCommand cmd)
        {
            IReadOnlyOperation[] ops = _ops.GetOperationsByDateDesc();
            for (int k = 0; k < ops.Length; k++)
            {
                IReadOnlyOperation op         = ops[k];
                DiscordMessage     newMessage = await e.Channel.SendMessageAsync(op.GetOperationMessageText());

                ulong oldMessageId = _ops.UpdateMessageId(op.Id, newMessage.Id);
                _repository.Save(_ops);
                DiscordMessage oldMessage = await e.Channel.GetMessageAsync(oldMessageId);

                try { await oldMessage.DeleteAsync(); } catch (NotFoundException) { }
                await Task.Delay(250);
                await PinMessage(e, newMessage);

                if (k != ops.Length - 1)
                {
                    await Task.Delay(3000);
                }
            }
        }
예제 #3
0
 public OperationUpdatedEventArgs(IReadOnlyOperation operation)
 {
     Operation = operation;
 }