Browse Source

Added several new events

tags/docs-0.9
Brandon Smith 9 years ago
parent
commit
d141d555d9
11 changed files with 352 additions and 91 deletions
  1. +10
    -0
      Discord.Net/API/Models/General.cs
  2. +38
    -4
      Discord.Net/API/Models/WebSocketEvents.cs
  3. +1
    -0
      Discord.Net/Discord.Net.csproj
  4. +154
    -39
      Discord.Net/DiscordClient.Events.cs
  5. +98
    -27
      Discord.Net/DiscordClient.cs
  6. +3
    -5
      Discord.Net/Models/Channel.cs
  7. +5
    -5
      Discord.Net/Models/ChatMessage.cs
  8. +8
    -3
      Discord.Net/Models/ChatMessageReference.cs
  9. +29
    -0
      Discord.Net/Models/Role.cs
  10. +4
    -5
      Discord.Net/Models/Server.cs
  11. +2
    -3
      Discord.Net/Models/User.cs

+ 10
- 0
Discord.Net/API/Models/General.cs View File

@@ -128,4 +128,14 @@ namespace Discord.API.Models
[JsonProperty(PropertyName = "channel_id")] [JsonProperty(PropertyName = "channel_id")]
public string ChannelId; public string ChannelId;
} }

internal class Role
{
[JsonProperty(PropertyName = "permissions")]
public int Permissions;
[JsonProperty(PropertyName = "name")]
public string Name;
[JsonProperty(PropertyName = "id")]
public string Id;
}
} }

+ 38
- 4
Discord.Net/API/Models/WebSocketEvents.cs View File

@@ -30,19 +30,22 @@ namespace Discord.API.Models


internal sealed class ChannelCreate : ChannelInfo { } internal sealed class ChannelCreate : ChannelInfo { }
internal sealed class ChannelDelete : ChannelInfo { } internal sealed class ChannelDelete : ChannelInfo { }
internal sealed class ChannelUpdate : ChannelInfo { }


internal sealed class GuildMemberAdd
internal sealed class GuildMemberAdd : GuildMemberUpdate
{
[JsonProperty(PropertyName = "joined_at")]
public DateTime JoinedAt;
}
internal class GuildMemberUpdate
{ {
[JsonProperty(PropertyName = "user")] [JsonProperty(PropertyName = "user")]
public UserInfo User; public UserInfo User;
[JsonProperty(PropertyName = "roles")] [JsonProperty(PropertyName = "roles")]
public object[] Roles; public object[] Roles;
[JsonProperty(PropertyName = "joined_at")]
public DateTime JoinedAt;
[JsonProperty(PropertyName = "guild_id")] [JsonProperty(PropertyName = "guild_id")]
public string GuildId; public string GuildId;
} }

internal sealed class GuildMemberRemove internal sealed class GuildMemberRemove
{ {
[JsonProperty(PropertyName = "user")] [JsonProperty(PropertyName = "user")]
@@ -50,6 +53,37 @@ namespace Discord.API.Models
[JsonProperty(PropertyName = "guild_id")] [JsonProperty(PropertyName = "guild_id")]
public string GuildId; public string GuildId;
} }

internal sealed class GuildRoleCreateUpdate
{
[JsonProperty(PropertyName = "role")]
public Role Role;
[JsonProperty(PropertyName = "guild_id")]
public string GuildId;
}
internal sealed class GuildRoleDelete
{
[JsonProperty(PropertyName = "role_id")]
public string RoleId;
[JsonProperty(PropertyName = "guild_id")]
public string GuildId;
}

internal sealed class GuildBanAddRemove
{
[JsonProperty(PropertyName = "user")]
public UserInfo User;
[JsonProperty(PropertyName = "guild_id")]
public string GuildId;
}
internal sealed class GuildBanRemove
{
[JsonProperty(PropertyName = "user_id")]
public string UserId;
[JsonProperty(PropertyName = "guild_id")]
public string GuildId;
}

internal sealed class UserUpdate : SelfUserInfo { } internal sealed class UserUpdate : SelfUserInfo { }
internal sealed class PresenceUpdate : PresenceUserInfo { } internal sealed class PresenceUpdate : PresenceUserInfo { }
internal sealed class VoiceStateUpdate internal sealed class VoiceStateUpdate


+ 1
- 0
Discord.Net/Discord.Net.csproj View File

@@ -49,6 +49,7 @@
<Compile Include="API\Models\ApiRequests.cs" /> <Compile Include="API\Models\ApiRequests.cs" />
<Compile Include="API\Endpoints.cs" /> <Compile Include="API\Endpoints.cs" />
<Compile Include="API\Models\WebSocketCommands.cs" /> <Compile Include="API\Models\WebSocketCommands.cs" />
<Compile Include="Models\Role.cs" />
<Compile Include="Models\ChatMessageReference.cs" /> <Compile Include="Models\ChatMessageReference.cs" />
<Compile Include="Models\ChatMessage.cs" /> <Compile Include="Models\ChatMessage.cs" />
<Compile Include="Models\Channel.cs" /> <Compile Include="Models\Channel.cs" />


+ 154
- 39
Discord.Net/DiscordClient.Events.cs View File

@@ -5,46 +5,12 @@ namespace Discord
{ {
public partial class DiscordClient public partial class DiscordClient
{ {
public sealed class ServerEventArgs : EventArgs
{
public readonly Server Server;
internal ServerEventArgs(Server server) { Server = server; }
}
public sealed class ChannelEventArgs : EventArgs
{
public readonly Channel Channel;
internal ChannelEventArgs(Channel channel) { Channel = channel; }
}
public sealed class UserEventArgs : EventArgs
{
public readonly User User;
internal UserEventArgs(User user) { User = user; }
}
public sealed class MessageCreateEventArgs : EventArgs
{
public readonly ChatMessage Message;
internal MessageCreateEventArgs(ChatMessage msg) { Message = msg; }
}
public sealed class MessageEventArgs : EventArgs
{
public readonly ChatMessageReference Message;
internal MessageEventArgs(ChatMessageReference msg) { Message = msg; }
}
//Debug
public sealed class LogMessageEventArgs : EventArgs public sealed class LogMessageEventArgs : EventArgs
{ {
public readonly string Message; public readonly string Message;
internal LogMessageEventArgs(string msg) { Message = msg; } internal LogMessageEventArgs(string msg) { Message = msg; }
} }
public sealed class UserTypingEventArgs : EventArgs
{
public readonly User User;
public readonly Channel Channel;
internal UserTypingEventArgs(User user, Channel channel)
{
User = user;
Channel = channel;
}
}


public event EventHandler<LogMessageEventArgs> DebugMessage; public event EventHandler<LogMessageEventArgs> DebugMessage;
private void RaiseOnDebugMessage(string message) private void RaiseOnDebugMessage(string message)
@@ -53,6 +19,7 @@ namespace Discord
DebugMessage(this, new LogMessageEventArgs(message)); DebugMessage(this, new LogMessageEventArgs(message));
} }


//General
public event EventHandler Connected; public event EventHandler Connected;
private void RaiseConnected() private void RaiseConnected()
{ {
@@ -73,54 +40,202 @@ namespace Discord
if (LoggedIn != null) if (LoggedIn != null)
LoggedIn(this, EventArgs.Empty); LoggedIn(this, EventArgs.Empty);
} }
public event EventHandler<ServerEventArgs> ServerCreated, ServerDestroyed;

//Server
public sealed class ServerEventArgs : EventArgs
{
public readonly Server Server;
internal ServerEventArgs(Server server) { Server = server; }
}

public event EventHandler<ServerEventArgs> ServerCreated;
private void RaiseServerCreated(Server server) private void RaiseServerCreated(Server server)
{ {
if (ServerCreated != null) if (ServerCreated != null)
ServerCreated(this, new ServerEventArgs(server)); ServerCreated(this, new ServerEventArgs(server));
} }

public event EventHandler<ServerEventArgs> ServerDestroyed;
private void RaiseServerDestroyed(Server server) private void RaiseServerDestroyed(Server server)
{ {
if (ServerDestroyed != null) if (ServerDestroyed != null)
ServerDestroyed(this, new ServerEventArgs(server)); ServerDestroyed(this, new ServerEventArgs(server));
} }


public event EventHandler<ChannelEventArgs> ChannelCreated, ChannelDestroyed;
//Channel
public sealed class ChannelEventArgs : EventArgs
{
public readonly Channel Channel;
internal ChannelEventArgs(Channel channel) { Channel = channel; }
}

public event EventHandler<ChannelEventArgs> ChannelCreated;
private void RaiseChannelCreated(Channel channel) private void RaiseChannelCreated(Channel channel)
{ {
if (ChannelCreated != null) if (ChannelCreated != null)
ChannelCreated(this, new ChannelEventArgs(channel)); ChannelCreated(this, new ChannelEventArgs(channel));
} }

public event EventHandler<ChannelEventArgs> ChannelDestroyed;
private void RaiseChannelDestroyed(Channel channel) private void RaiseChannelDestroyed(Channel channel)
{ {
if (ChannelDestroyed != null) if (ChannelDestroyed != null)
ChannelDestroyed(this, new ChannelEventArgs(channel)); ChannelDestroyed(this, new ChannelEventArgs(channel));
} }


public event EventHandler<ChannelEventArgs> ChannelUpdated;
private void RaiseChannelUpdated(Channel channel)
{
if (ChannelUpdated != null)
ChannelUpdated(this, new ChannelEventArgs(channel));
}

//User
public sealed class UserEventArgs : EventArgs
{
public readonly User User;
internal UserEventArgs(User user) { User = user; }
}

//Message
public sealed class MessageCreateEventArgs : EventArgs
{
public readonly ChatMessage Message;
internal MessageCreateEventArgs(ChatMessage msg) { Message = msg; }
}
public sealed class MessageEventArgs : EventArgs
{
public readonly ChatMessageReference Message;
internal MessageEventArgs(ChatMessageReference msg) { Message = msg; }
}

public event EventHandler<MessageCreateEventArgs> MessageCreated; public event EventHandler<MessageCreateEventArgs> MessageCreated;
public event EventHandler<MessageEventArgs> MessageDeleted, MessageUpdated, MessageAcknowledged;
private void RaiseMessageCreated(ChatMessage msg) private void RaiseMessageCreated(ChatMessage msg)
{ {
if (MessageCreated != null) if (MessageCreated != null)
MessageCreated(this, new MessageCreateEventArgs(msg)); MessageCreated(this, new MessageCreateEventArgs(msg));
} }

public event EventHandler<MessageEventArgs> MessageDeleted;
private void RaiseMessageDeleted(ChatMessageReference msg) private void RaiseMessageDeleted(ChatMessageReference msg)
{ {
if (MessageDeleted != null) if (MessageDeleted != null)
MessageDeleted(this, new MessageEventArgs(msg)); MessageDeleted(this, new MessageEventArgs(msg));
} }

public event EventHandler<MessageEventArgs> MessageUpdated;
private void RaiseMessageUpdated(ChatMessageReference msg) private void RaiseMessageUpdated(ChatMessageReference msg)
{ {
if (MessageUpdated != null) if (MessageUpdated != null)
MessageUpdated(this, new MessageEventArgs(msg)); MessageUpdated(this, new MessageEventArgs(msg));
} }

public event EventHandler<MessageEventArgs> MessageAcknowledged;
private void RaiseMessageAcknowledged(ChatMessageReference msg) private void RaiseMessageAcknowledged(ChatMessageReference msg)
{ {
if (MessageAcknowledged != null) if (MessageAcknowledged != null)
MessageAcknowledged(this, new MessageEventArgs(msg)); MessageAcknowledged(this, new MessageEventArgs(msg));
} }


//Role
public sealed class RoleEventArgs : EventArgs
{
public readonly Role Role;
internal RoleEventArgs(Role role) { Role = role; }
}

public event EventHandler<RoleEventArgs> RoleCreated;
private void RaiseRoleCreated(Role role)
{
if (RoleCreated != null)
RoleCreated(this, new RoleEventArgs(role));
}

public event EventHandler<RoleEventArgs> RoleUpdated;
private void RaiseRoleDeleted(Role role)
{
if (RoleDeleted != null)
RoleDeleted(this, new RoleEventArgs(role));
}

public event EventHandler<RoleEventArgs> RoleDeleted;
private void RaiseRoleUpdated(Role role)
{
if (RoleUpdated != null)
RoleUpdated(this, new RoleEventArgs(role));
}

//Ban
public sealed class BanEventArgs : EventArgs
{
public readonly User User;
public readonly Server Server;
internal BanEventArgs(User user, Server server)
{
User = user;
Server = server;
}
}

public event EventHandler<BanEventArgs> BanAdded;
private void RaiseBanAdded(User user, Server server)
{
if (BanAdded != null)
BanAdded(this, new BanEventArgs(user, server));
}

public event EventHandler<BanEventArgs> BanRemoved;
private void RaiseBanRemoved(User user, Server server)
{
if (BanRemoved != null)
BanRemoved(this, new BanEventArgs(user, server));
}

//Member
public sealed class MemberEventArgs : EventArgs
{
public readonly User User;
public readonly Server Server;
internal MemberEventArgs(User user, Server server)
{
User = user;
Server = server;
}
}

public event EventHandler<MemberEventArgs> MemberAdded;
private void RaiseMemberAdded(User user, Server server)
{
if (MemberAdded != null)
MemberAdded(this, new MemberEventArgs(user, server));
}

public event EventHandler<MemberEventArgs> MemberRemoved;
private void RaiseMemberRemoved(User user, Server server)
{
if (MemberRemoved != null)
MemberRemoved(this, new MemberEventArgs(user, server));
}

public event EventHandler<MemberEventArgs> MemberUpdated;
private void RaiseMemberUpdated(User user, Server server)
{
if (MemberUpdated != null)
MemberUpdated(this, new MemberEventArgs(user, server));
}

//Status
public sealed class UserTypingEventArgs : EventArgs
{
public readonly User User;
public readonly Channel Channel;
internal UserTypingEventArgs(User user, Channel channel)
{
User = user;
Channel = channel;
}
}

public event EventHandler<UserEventArgs> PresenceUpdated; public event EventHandler<UserEventArgs> PresenceUpdated;
private void RaisePresenceUpdated(User user) private void RaisePresenceUpdated(User user)
{ {


+ 98
- 27
Discord.Net/DiscordClient.cs View File

@@ -7,6 +7,7 @@ using System.Collections.Concurrent;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using System.Threading.Tasks; using System.Threading.Tasks;
using Role = Discord.Models.Role;


namespace Discord namespace Discord
{ {
@@ -107,15 +108,23 @@ namespace Discord
RaiseChannelDestroyed(channel); RaiseChannelDestroyed(channel);
} }
break; break;
case "CHANNEL_UPDATE":
{
var data = e.Event.ToObject<WebSocketEvents.ChannelUpdate>();
var channel = DeleteChannel(data.Id);
RaiseChannelUpdated(channel);
}
break;


//Members //Members
case "GUILD_MEMBER_ADD": case "GUILD_MEMBER_ADD":
{ {
var data = e.Event.ToObject<WebSocketEvents.GuildMemberAdd>(); var data = e.Event.ToObject<WebSocketEvents.GuildMemberAdd>();
var user = UpdateUser(data.User);
var user = UpdateUser(data.User);
var server = GetServer(data.GuildId); var server = GetServer(data.GuildId);
server._members[user.Id] = true; server._members[user.Id] = true;
}
RaiseMemberAdded(user, server);
}
break; break;
case "GUILD_MEMBER_REMOVE": case "GUILD_MEMBER_REMOVE":
{ {
@@ -123,22 +132,56 @@ namespace Discord
var user = UpdateUser(data.User); var user = UpdateUser(data.User);
var server = GetServer(data.GuildId); var server = GetServer(data.GuildId);
server._members[user.Id] = true; server._members[user.Id] = true;
RaiseMemberRemoved(user, server);
}
break;
case "GUILD_MEMBER_UPDATE":
{
var data = e.Event.ToObject<WebSocketEvents.GuildMemberUpdate>();
var user = UpdateUser(data.User);
var server = GetServer(data.GuildId);
RaiseMemberUpdated(user, server);
} }
break; break;


//Users
case "PRESENCE_UPDATE":
//Roles
case "GUILD_ROLE_CREATE":
{ {
var data = e.Event.ToObject<WebSocketEvents.PresenceUpdate>();
var user = UpdateUser(data);
RaisePresenceUpdated(user);
var data = e.Event.ToObject<WebSocketEvents.GuildRoleCreateUpdate>();
var role = UpdateRole(data);
RaiseRoleCreated(role);
} }
break; break;
case "VOICE_STATE_UPDATE":
case "GUILD_ROLE_DELETE":
{ {
var data = e.Event.ToObject<WebSocketEvents.VoiceStateUpdate>();
var user = GetUser(data.UserId); //TODO: Don't ignore this
RaiseVoiceStateUpdated(user);
var data = e.Event.ToObject<WebSocketEvents.GuildRoleDelete>();
var role = GetRole(data.RoleId, data.GuildId);
RaiseRoleDeleted(role);
}
break;
case "GUILD_ROLE_UPDATE":
{
var data = e.Event.ToObject<WebSocketEvents.GuildRoleCreateUpdate>();
var role = UpdateRole(data);
RaiseRoleUpdated(role);
}
break;

//Roles
case "GUILD_BAN_ADD":
{
var data = e.Event.ToObject<WebSocketEvents.GuildBanAddRemove>();
var user = UpdateUser(data.User);
var server = GetServer(data.GuildId);
RaiseBanAdded(user, server);
}
break;
case "GUILD_BAN_REMOVE":
{
var data = e.Event.ToObject<WebSocketEvents.GuildBanAddRemove>();
var user = UpdateUser(data.User);
var server = GetServer(data.GuildId);
RaiseBanRemoved(user, server);
} }
break; break;


@@ -172,6 +215,22 @@ namespace Discord
RaiseMessageAcknowledged(msg); RaiseMessageAcknowledged(msg);
} }
break; break;

//Statuses
case "PRESENCE_UPDATE":
{
var data = e.Event.ToObject<WebSocketEvents.PresenceUpdate>();
var user = UpdateUser(data);
RaisePresenceUpdated(user);
}
break;
case "VOICE_STATE_UPDATE":
{
var data = e.Event.ToObject<WebSocketEvents.VoiceStateUpdate>();
var user = GetUser(data.UserId); //TODO: Don't ignore this
RaiseVoiceStateUpdated(user);
}
break;
case "TYPING_START": case "TYPING_START":
{ {
var data = e.Event.ToObject<WebSocketEvents.TypingStart>(); var data = e.Event.ToObject<WebSocketEvents.TypingStart>();
@@ -271,7 +330,7 @@ namespace Discord
_users.TryGetValue(id, out user); _users.TryGetValue(id, out user);
return user; return user;
} }
private User UpdateUser(UserInfo model)
private User UpdateUser(UserInfo model, bool addNew = true)
{ {
var user = GetUser(model.Id) ?? new User(model.Id, this); var user = GetUser(model.Id) ?? new User(model.Id, this);
@@ -291,7 +350,8 @@ namespace Discord
user.Status = extendedModel.Status; user.Status = extendedModel.Status;
} }


_users[model.Id] = user;
if (addNew)
_users[model.Id] = user;
return user; return user;
} }


@@ -302,7 +362,7 @@ namespace Discord
_servers.TryGetValue(id, out server); _servers.TryGetValue(id, out server);
return server; return server;
} }
private Server UpdateServer(ServerInfo model)
private Server UpdateServer(ServerInfo model, bool addNew = true)
{ {
var server = GetServer(model.Id) ?? new Server(model.Id, this); var server = GetServer(model.Id) ?? new Server(model.Id, this);
@@ -321,17 +381,18 @@ namespace Discord


foreach (var channel in extendedModel.Channels) foreach (var channel in extendedModel.Channels)
{ {
UpdateChannel(channel, model.Id);
UpdateChannel(channel, model.Id, addNew);
server._channels[channel.Id] = true; server._channels[channel.Id] = true;
} }
foreach (var membership in extendedModel.Members) foreach (var membership in extendedModel.Members)
{ {
UpdateUser(membership.User);
UpdateUser(membership.User, addNew);
server._members[membership.User.Id] = true; server._members[membership.User.Id] = true;
} }
} }


_servers[model.Id] = server;
if (addNew)
_servers[model.Id] = server;
return server; return server;
} }


@@ -342,7 +403,7 @@ namespace Discord
_channels.TryGetValue(id, out channel); _channels.TryGetValue(id, out channel);
return channel; return channel;
} }
private Channel UpdateChannel(ChannelInfo model, string serverId)
private Channel UpdateChannel(ChannelInfo model, string serverId, bool addNew = true)
{ {
var channel = GetChannel(model.Id) ?? new Channel(model.Id, serverId, this); var channel = GetChannel(model.Id) ?? new Channel(model.Id, serverId, this);


@@ -352,7 +413,8 @@ namespace Discord
channel.RecipientId = model.Recipient?.Id; channel.RecipientId = model.Recipient?.Id;
channel.Type = model.Type; channel.Type = model.Type;


_channels[model.Id] = channel;
if (addNew)
_channels[model.Id] = channel;
return channel; return channel;
} }
private Channel DeleteChannel(string id) private Channel DeleteChannel(string id)
@@ -370,18 +432,13 @@ namespace Discord
private ChatMessageReference GetMessage(string id, string channelId) private ChatMessageReference GetMessage(string id, string channelId)
{ {
if (id == null || channelId == null) return null; if (id == null || channelId == null) return null;
var msg = new ChatMessageReference(id, this);

msg.ChannelId = channelId;

return msg;
return new ChatMessageReference(id, channelId, this);
} }
private ChatMessage UpdateMessage(WebSocketEvents.MessageCreate model)
private ChatMessage UpdateMessage(WebSocketEvents.MessageCreate model, bool addNew = true)
{ {
return new ChatMessage(model.Id, this)
return new ChatMessage(model.Id, model.ChannelId, this)
{ {
Attachments = model.Attachments, Attachments = model.Attachments,
ChannelId = model.ChannelId,
Text = model.Content, Text = model.Content,
Embeds = model.Embeds, Embeds = model.Embeds,
IsMentioningEveryone = model.IsMentioningEveryone, IsMentioningEveryone = model.IsMentioningEveryone,
@@ -391,6 +448,20 @@ namespace Discord
}; };
} }


private Role GetRole(string id, string serverId)
{
if (id == null || serverId == null) return null;
return new Role(id, serverId, this);
}
private Role UpdateRole(WebSocketEvents.GuildRoleCreateUpdate role, bool addNew = true)
{
return new Role(role.Role.Id, role.GuildId, this)
{
Name = role.Role.Name,
Permissions = role.Role.Permissions
};
}

private void CheckReady() private void CheckReady()
{ {
if (!_isReady) if (!_isReady)


+ 3
- 5
Discord.Net/Models/Channel.cs View File

@@ -2,9 +2,9 @@


namespace Discord.Models namespace Discord.Models
{ {
public class Channel
public sealed class Channel
{ {
protected readonly DiscordClient _client;
private readonly DiscordClient _client;
private string _name; private string _name;


public string Id { get; } public string Id { get; }
@@ -12,8 +12,7 @@ namespace Discord.Models


public bool IsPrivate { get; internal set; } public bool IsPrivate { get; internal set; }
public string Type { get; internal set; } public string Type { get; internal set; }

[JsonIgnore]
public string ServerId { get; } public string ServerId { get; }
[JsonIgnore] [JsonIgnore]
public Server Server { get { return ServerId != null ? _client.GetServer(ServerId) : null; } } public Server Server { get { return ServerId != null ? _client.GetServer(ServerId) : null; } }
@@ -35,7 +34,6 @@ namespace Discord.Models
public override string ToString() public override string ToString()
{ {
return Name; return Name;
//return Name + " (" + Id + ")";
} }
} }
} }

+ 5
- 5
Discord.Net/Models/ChatMessage.cs View File

@@ -3,23 +3,23 @@ using System;


namespace Discord.Models namespace Discord.Models
{ {
public class ChatMessage : ChatMessageReference
public sealed class ChatMessage : ChatMessageReference
{ {
public bool IsMentioningEveryone { get; internal set; } public bool IsMentioningEveryone { get; internal set; }
public bool IsTTS { get; internal set; } public bool IsTTS { get; internal set; }
public string Text { get; internal set; } public string Text { get; internal set; }
public DateTime Timestamp { get; internal set; } public DateTime Timestamp { get; internal set; }

[JsonIgnore]
public string UserId { get; internal set; } public string UserId { get; internal set; }
[JsonIgnore]
public User User { get { return _client.GetUser(UserId); } } public User User { get { return _client.GetUser(UserId); } }
//Not Implemented //Not Implemented
public object[] Attachments { get; internal set; } public object[] Attachments { get; internal set; }
public object[] Embeds { get; internal set; } public object[] Embeds { get; internal set; }


internal ChatMessage(string id, DiscordClient client)
: base(id, client)
internal ChatMessage(string id, string channelId, DiscordClient client)
: base(id, channelId, client)
{ {
} }




+ 8
- 3
Discord.Net/Models/ChatMessageReference.cs View File

@@ -1,16 +1,21 @@
namespace Discord.Models
using Newtonsoft.Json;

namespace Discord.Models
{ {
public class ChatMessageReference public class ChatMessageReference
{ {
protected readonly DiscordClient _client; protected readonly DiscordClient _client;


public string Id { get; } public string Id { get; }
public string ChannelId { get; internal set; }

public string ChannelId { get; }
[JsonIgnore]
public Channel Channel { get { return _client.GetChannel(ChannelId); } } public Channel Channel { get { return _client.GetChannel(ChannelId); } }


internal ChatMessageReference(string id, DiscordClient client)
internal ChatMessageReference(string id, string channelId, DiscordClient client)
{ {
Id = id; Id = id;
ChannelId = channelId;
_client = client; _client = client;
} }
} }


+ 29
- 0
Discord.Net/Models/Role.cs View File

@@ -0,0 +1,29 @@
using Newtonsoft.Json;

namespace Discord.Models
{
public sealed class Role
{
private readonly DiscordClient _client;

public string Id { get; }
public string Name { get; internal set; }

public int Permissions { get; internal set; }

public string ServerId { get; }
[JsonIgnore]
public Server Server { get { return _client.GetServer(ServerId); } }

internal Role(string id, string serverId, DiscordClient client)
{
Id = id;
_client = client;
}

public override string ToString()
{
return Name;
}
}
}

+ 4
- 5
Discord.Net/Models/Server.cs View File

@@ -6,9 +6,9 @@ using System.Linq;


namespace Discord.Models namespace Discord.Models
{ {
public class Server
public sealed class Server
{ {
protected readonly DiscordClient _client;
private readonly DiscordClient _client;


public string Id { get; } public string Id { get; }
public string Name { get; internal set; } public string Name { get; internal set; }
@@ -22,13 +22,13 @@ namespace Discord.Models
public User Owner { get { return _client.GetUser(OwnerId); } } public User Owner { get { return _client.GetUser(OwnerId); } }


internal ConcurrentDictionary<string, bool> _members; internal ConcurrentDictionary<string, bool> _members;
[JsonIgnore]
public IEnumerable<string> MemberIds { get { return _members.Keys; } } public IEnumerable<string> MemberIds { get { return _members.Keys; } }
[JsonIgnore]
public IEnumerable<User> Members { get { return _members.Keys.Select(x => _client.GetUser(x)); } } public IEnumerable<User> Members { get { return _members.Keys.Select(x => _client.GetUser(x)); } }


internal ConcurrentDictionary<string, bool> _channels; internal ConcurrentDictionary<string, bool> _channels;
[JsonIgnore]
public IEnumerable<string> ChannelIds { get { return _channels.Keys; } } public IEnumerable<string> ChannelIds { get { return _channels.Keys; } }
[JsonIgnore]
public IEnumerable<Channel> Channels { get { return _channels.Keys.Select(x => _client.GetChannel(x)); } } public IEnumerable<Channel> Channels { get { return _channels.Keys.Select(x => _client.GetChannel(x)); } }


//Not Implemented //Not Implemented
@@ -47,7 +47,6 @@ namespace Discord.Models
public override string ToString() public override string ToString()
{ {
return Name; return Name;
//return Name + " (" + Id + ")";
} }
} }
} }

+ 2
- 3
Discord.Net/Models/User.cs View File

@@ -2,9 +2,9 @@


namespace Discord.Models namespace Discord.Models
{ {
public class User
public sealed class User
{ {
protected readonly DiscordClient _client;
private readonly DiscordClient _client;


public string Id { get; } public string Id { get; }
public string Name { get; internal set; } public string Name { get; internal set; }
@@ -34,7 +34,6 @@ namespace Discord.Models
public override string ToString() public override string ToString()
{ {
return Name; return Name;
//return Name + " (" + Id + ")";
} }
} }
} }

Loading…
Cancel
Save