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