示例#1
0
        public async Task CreateDispenser(params string[] description)
        {
            RoleDispenser dispenser = new RoleDispenser(Context.Guild, (SocketTextChannel)Context.Channel, string.Join(' ', description));
            await dispenser.SendMessage();

            await _service.AddRoleDispenser(dispenser);
        }
示例#2
0
 public bool TryGetRoleDispenser(ulong guildId, ulong messageId, out RoleDispenser dispenser)
 {
     dispenser = default;
     if (_guildDispensers.TryGetValue(guildId, out var dispenserList))
     {
         dispenser = dispenserList.FirstOrDefault(x => x.ListenedMessage.Id == messageId);
         return(dispenser != null);
     }
     else
     {
         return(false);
     }
 }
示例#3
0
 public bool TryGetRoleDispenser(ulong guildId, Guid guid, out RoleDispenser dispenser)
 {
     dispenser = default;
     if (_guildDispensers.TryGetValue(guildId, out var dispenserList))
     {
         dispenser = dispenserList.FirstOrDefault(x => x.Guid == guid);
         return(dispenser != null);
     }
     else
     {
         return(false);
     }
 }
 public void Update(RoleDispenser dispenser)
 {
     Guid        = dispenser.Guid;
     Description = dispenser.Description;
     GuildId     = dispenser.Guild.Id;
     ChannelId   = dispenser.Channel.Id;
     MessageId   = dispenser.ListenedMessage.Id;
     Bindings    = new List <EmoteRolePairReference>();
     foreach (var key in dispenser.EmoteToRoleBindings.Keys)
     {
         Bindings.Add(
             new EmoteRolePairReference()
         {
             Emote  = key.Name,
             RoleId = dispenser.EmoteToRoleBindings[key].Id
         });
     }
 }
示例#5
0
        public async Task RemoveRoleDispenser(RoleDispenser dispenser)
        {
            await _roleDispensers.DeleteOneAsync(x => x.Guid == dispenser.Guid);

            _guildDispensers[dispenser.Guild.Id].Remove(dispenser);
        }
示例#6
0
        public async Task ReplaceWithNewerRoleDispenser(RoleDispenser dispenser)
        {
            await _roleDispensers.ReplaceOneAsync(x => x.Guid == dispenser.Guid, new RoleDispenserReference(dispenser) { _id = _dispensersToDBMappings[dispenser.Guid] });

            await dispenser.UpdateMessage();
        }
示例#7
0
 public async Task AddRoleDispenser(RoleDispenser dispenser)
 {
     _guildDispensers[dispenser.Guild.Id].Add(dispenser);
     await _roleDispensers.InsertOneAsync(new RoleDispenserReference(dispenser));
 }