示例#1
0
        public async Task Create(CommandContext ctx)
        {
            var message = new Entities.ClientMessage
            {
                ChannelId = ctx.Channel.Id.ToString(),
                ServerId  = ctx.Guild.Id.ToString()
            };

            var teamoEntry = new Entities.TeamoEntry
            {
                EndDate    = DateTime.Now + new TimeSpan(0, 0, 20),
                Game       = "League of LoL",
                MaxPlayers = 5,
                Message    = message
            };

            try
            {
                await _playService.CreateAsync(teamoEntry);
            }
            catch (Exception e)
            {
                await PostExceptionMessageAsync(ctx.Channel, _logger, e, "Could not create a new teamo :(");

                return;
            }
        }
示例#2
0
 public static Models.ClientMessage AsModelType(this Entities.ClientMessage entityMessage)
 {
     return(new Models.ClientMessage
     {
         MessageId = entityMessage.MessageId,
         ChannelId = entityMessage.ChannelId,
         ServerId = entityMessage.ServerId
     });
 }
示例#3
0
        public async Task DeleteMessageAsync(Entities.ClientMessage message)
        {
            ulong messageId = ulong.Parse(message.MessageId);
            ulong channelId = ulong.Parse(message.ChannelId);
            var   channel   = await _client.GetChannelAsync(channelId);

            try
            {
                var discordMessage = await channel.GetMessageAsync(messageId);

                await discordMessage.DeleteAsync();
            }
            catch (DSharpPlus.Exceptions.NotFoundException nfe)
            {
                _logger.LogWarning(nfe, "Tried deleting a message that had already been deleted.");
            }
        }
示例#4
0
 public Entities.TeamoEntry GetEntry(Entities.ClientMessage message)
 {
     _semaphore.Wait();
     try
     {
         var post = Posts.Single(
             (a) =>
             a.Message.MessageId == message.MessageId &&
             a.Message.ChannelId == message.ChannelId &&
             a.Message.ServerId == message.ServerId
             );
         return(post.AsEntityType());
     }
     finally
     {
         _semaphore.Release();
     }
 }
示例#5
0
 public Task RemoveMemberAsync(string userId, Entities.ClientMessage message)
 {
     throw new NotImplementedException();
 }
示例#6
0
 public async Task AddMemberAsync(Entities.Member member, Entities.ClientMessage message)
 {
     var   entry = _dbContext.GetEntry(message);
     await _timers[entry.Id.Value].AddMemberAsync(member);
 }
示例#7
0
        public async Task <Entities.TeamoEntry> AddMemberAsync(Entities.Member member, Entities.ClientMessage message)
        {
            return(await ExclusiveAsync(async() =>
            {
                _logger.LogInformation("Adding member!\n" +
                                       $"message id: {message.MessageId}\n" +
                                       $"channel id: {message.ChannelId}\n" +
                                       $"server id: {message.ServerId}\n"
                                       );

                var post = Posts.Single(
                    (a) =>
                    a.Message.MessageId == message.MessageId &&
                    a.Message.ChannelId == message.ChannelId &&
                    a.Message.ServerId == message.ServerId
                    );

                if (post.Members.Exists((a) => a.ClientUserId == member.ClientUserId))
                {
                    _logger.LogWarning($"Trying to add member {member.ClientUserId} to database, but member already exists. Updating numPlayers instead.");
                    post.Members.Single((a) => a.ClientUserId == member.ClientUserId).NumPlayers = member.NumPlayers;
                }
                else
                {
                    post.Members.Add(new Member()
                    {
                        ClientUserId = member.ClientUserId,
                        NumPlayers = member.NumPlayers
                    });
                }
                await SaveChangesAsync();
                return post.AsEntityType();
            }));
        }