Removed SessionsService
This commit is contained in:
@@ -1,83 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Discord.Sessions
|
||||
{
|
||||
public class SessionsService : IService
|
||||
{
|
||||
private static readonly DualChannelPermissions _ownerPerm = new DualChannelPermissions() { ReadMessages = true, ManageChannel = true };
|
||||
private static readonly DualChannelPermissions _memberPerm = new DualChannelPermissions() { ReadMessages = true };
|
||||
private static readonly DualChannelPermissions _everyonePerm = new DualChannelPermissions() { ReadMessages = false };
|
||||
|
||||
private DiscordClient _client;
|
||||
|
||||
public void Install(DiscordClient client)
|
||||
{
|
||||
_client = client;
|
||||
}
|
||||
|
||||
public IEnumerable<Channel> GetSessions(Server server)
|
||||
=> server.TextChannels.Where(x => x.Name != "" && x.Name[0] == '!');
|
||||
|
||||
public async Task<Channel> CreateSession(Server server, string name, bool includeVoice, User owner)
|
||||
{
|
||||
name = '!' + name;
|
||||
Channel textChannel = await _client.CreateChannel(server, name, ChannelType.Text);
|
||||
Channel voiceChannel = includeVoice ? await _client.CreateChannel(server, name, ChannelType.Voice) : null;
|
||||
|
||||
//Take away read from everyone
|
||||
await _client.SetChannelPermissions(textChannel, server.EveryoneRole, _everyonePerm);
|
||||
await _client.SetChannelPermissions(textChannel, owner, _ownerPerm);
|
||||
|
||||
return textChannel;
|
||||
}
|
||||
|
||||
public async Task DestroySession(Channel channel)
|
||||
{
|
||||
if (channel == null) throw new ArgumentNullException(nameof(channel));
|
||||
CheckSession(channel);
|
||||
|
||||
await _client.DeleteChannel(channel);
|
||||
}
|
||||
|
||||
public Task JoinSession(Channel channel, User user)
|
||||
{
|
||||
if (channel == null) throw new ArgumentNullException(nameof(channel));
|
||||
if (user == null) throw new ArgumentNullException(nameof(user));
|
||||
CheckSession(channel);
|
||||
|
||||
return _client.SetChannelPermissions(channel, user, _memberPerm);
|
||||
}
|
||||
|
||||
public async Task LeaveSession(Channel channel, User user)
|
||||
{
|
||||
if (channel == null) throw new ArgumentNullException(nameof(channel));
|
||||
if (user == null) throw new ArgumentNullException(nameof(user));
|
||||
CheckSession(channel);
|
||||
|
||||
if (IsOwner(channel, user))
|
||||
await DestroySession(channel);
|
||||
else
|
||||
await _client.RemoveChannelPermissions(channel, user);
|
||||
}
|
||||
|
||||
private bool IsSession(Channel channel)
|
||||
=> channel.Name == "" && channel.Name[0] == '!';
|
||||
private void CheckSession(Channel channel)
|
||||
{
|
||||
if (!IsSession(channel))
|
||||
throw new InvalidOperationException("The provided channel is not a session.");
|
||||
}
|
||||
private bool IsOwner(Channel channel, User user)
|
||||
=> _client.GetChannelPermissions(channel, user).ManageMessages == true;
|
||||
/*private IEnumerable<string> GetPermissionUsers(Channel channel)
|
||||
{
|
||||
return channel.PermissionOverwrites
|
||||
.Where(x => x.TargetType == PermissionTarget.User && x.Allow.Text_ReadMessages)
|
||||
.Select(x => x.TargetId);
|
||||
}*/
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user