@@ -49,7 +49,7 @@ namespace Discord
_connectionLock = new SemaphoreSlim(1, 1);
_restClientProvider = config.RestClientProvider;
UserAgent = GetUserAgent(config.AppName, config.AppVersion, config.AppUrl) ;
UserAgent = $"DiscordBot ({DiscordConfig.LibUrl}, v{DiscordConfig.LibVersion})" ;
_logManager = new LogManager(config.LogLevel);
_logManager.Message += (s, e) => Log(this, e);
@@ -165,18 +165,18 @@ namespace Discord
result[i] = CreateGuild(response[i]);
return result.ToImmutable();
}
public virtual async Task<User> GetUser(ulong id)
public virtual async Task<I User> GetUser(ulong id)
{
var response = await RestClient.Send(new GetUserRequest(id));
var user = CreatePublic User(response);
var user = CreateGlobal User(response);
return user;
}
public virtual async Task<User> GetUser(string username, ushort discriminator)
public virtual async Task<I User> GetUser(string username, ushort discriminator)
{
var response = await RestClient.Send(new QueryUserRequest() { Query = $"{username}#{discriminator}", Limit = 1 });
if (response.Length > 0)
{
var user = CreatePublic User(response[0]);
var user = CreateGlobal User(response[0]);
return user;
}
return null;
@@ -265,7 +265,7 @@ namespace Discord
guild.Update(model);
return guild;
}
internal virtual Message CreateMessage(IMessageChannel channel, User user, API.Message model)
internal virtual Message CreateMessage(IMessageChannel channel, I User user, API.Message model)
{
var msg = new Message(model.Id, channel, user);
msg.Update(model);
@@ -277,33 +277,33 @@ namespace Discord
role.Update(model);
return role;
}
internal virtual GuildUser CreateBannedUser(Guild guild , API.User model)
internal virtual DMUser CreateDMUser(DMChannel channel , API.User model)
{
var user = new GuildUser(model.Id, guild, null, nul l);
var user = new DMUser(CreateGlobalUser(model), channe l);
user.Update(model);
return user;
}
internal virtual DMUser CreateDMUser(DMChannel channel, API.Us er model)
internal virtual GuildUser CreateGuildUser(Guild guild, API.GuildMemb er model)
{
var user = new DMUser(model.Id, channel );
var user = new GuildUser(CreateGlobalUser(model.User), guild );
user.Update(model);
return user;
}
internal virtual GuildUser CreateGuildUser(Guild guild, GuildPresence presence, VoiceState voiceState, API.GuildMemb er model)
internal virtual GuildUser CreateBannedUser(Guild guild, API.Us er model)
{
var user = new GuildUser(model.User.Id, guild, presence, voiceState );
user.Update(model);
var user = new GuildUser(CreateGlobalUser(model), guild );
// user.Update(model);
return user;
}
internal virtual PublicUser CreatePublic User(API.User model)
internal virtual SelfUser CreateSelf User(API.User model)
{
var user = new Public User(model.Id, this);
var user = new Self User(model.Id, this);
user.Update(model);
return user;
}
internal virtual SelfUser CreateSelf User(API.User model)
internal virtual GlobalUser CreateGlobal User(API.User model)
{
var user = new Self User(model.Id, this);
var user = new Global User(model.Id, this);
user.Update(model);
return user;
}
@@ -314,6 +314,8 @@ namespace Discord
return region;
}
internal virtual void RemoveUser(GlobalUser user) { }
protected virtual void Dispose(bool disposing)
{
if (!_isDisposed)
@@ -329,22 +331,6 @@ namespace Discord
}
public void Dispose() => Dispose(true);
private static string GetUserAgent(string appName, string appVersion, string appUrl)
{
var sb = new StringBuilder();
if (!string.IsNullOrEmpty(appName))
{
sb.Append(appName);
if (!string.IsNullOrEmpty(appVersion))
sb.Append($"/{appVersion}");
if (!string.IsNullOrEmpty(appUrl))
sb.Append($" ({appUrl})");
sb.Append(' ');
}
sb.Append($"DiscordBot ({DiscordConfig.LibUrl}, v{DiscordConfig.LibVersion})");
return sb.ToString();
}
protected void RaiseEvent(EventHandler eventHandler)
=> eventHandler?.Invoke(this, EventArgs.Empty);
protected void RaiseEvent<T>(EventHandler<T> eventHandler, T eventArgs) where T : EventArgs