diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5b7c523..6866a2a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,13 @@
+# 1.3.0
+- Renamed `calculateIntents` to `intentsCalculator`
+- Add set slashcommands
+- Add GuildDiscoverySplash
+- Adding Docs in Guild Class
+- Fix `guild_icon`
+- Fix `guild_splash`
+- Removed `base_image`
+- Removed `notUpdatedGuild` from UnavailableGuild
+
# 1.2.0
- Add `client`
- Add Event Emitter/Listener (`client.on`)
diff --git a/lib/src/classes/guild/guild.dart b/lib/src/classes/guild/guild.dart
index 94fabe1..1a73315 100644
--- a/lib/src/classes/guild/guild.dart
+++ b/lib/src/classes/guild/guild.dart
@@ -1,3 +1,4 @@
+import '../images/guild_discovery_splash.dart';
import '../images/guild_icon.dart';
import '../../requests.dart';
@@ -17,23 +18,28 @@ class Guild {
MemberManager? members;
RoleManager? roles;
- // Param guild create | fetch | fetch-servers
- /// The guild's id
- /// ✅ GuildCreate, GuildUpdate, GuildDelete, FetchOneGuild, FetchAllGuild
+ /// The guild's id
late String id;
/// Whether the guild is available to access. If it is not available, it indicates a server outage
- /// ✅ GuildCreate, GuildDelete
- /// ❎ FetchOneGuild, FetchAllGuild, GuildUpdate
- late bool unavailable;
- late String name; // x | x | x
- late GuildIcon? icon; // x | x | x
- late String? iconHash; // x | x |
- String? splashHash; // x | x |
- GuildSplash? splash;
- String? discoverySplash; // x | x |
- bool? appIsOwner; // | | x
- Future? owner; // | |
- String? ownerId; // x | x |
+ bool unavailable = false;
+ /// The name of this guild
+ late String name;
+ /// The icon hash of this guild
+ late String? iconHash;
+ /// The icon of this guild
+ late GuildIcon? icon;
+ /// The hash of the guild invite splash image
+ late String? splashHash;
+ /// The guild invite splash image of this guild
+ late GuildSplash? splash;
+ /// The hash of the guild discovery splash image
+ late String? discoverySplashHash;
+ /// The guild discovery splash image of this guild
+ late GuildDiscoverySplash? discoverySplash;
+ /// The owner of this guild
+ late Future? owner;
+ /// The owner id of this guild
+ String? ownerId;
String? permissions; // | | x
String? afkChannelId; // x | x |
int? afkTimeout; // x | x |
@@ -66,6 +72,7 @@ class Guild {
String? joinedAt; // x | |
bool? large; // x | |
int? memberCount; // x | |
+ // Param guild create | fetch | fetch-servers
Guild(this._sender, Map data) {
id = data["id"];
@@ -93,27 +100,32 @@ class Guild {
roles = RoleManager([]);
}
- unavailable = false;
name = data["name"];
- if (data["icon"] != null) {
- icon = GuildIcon(data["icon"], id);
+
+ iconHash = data["icon_hash"];
+ if (iconHash != null) {
+ icon = GuildIcon(iconHash!, id);
} else {
icon = null;
}
- iconHash = data["icon_hash"];
+
splashHash = data["splash"];
if (splashHash != null) {
- splash = GuildSplash(splashHash.toString(), id);
+ splash = GuildSplash(splashHash!, id);
+ } else {
+ splash = null;
}
- if (data["discovery_splash"] != null) {
- discoverySplash = data["discovery_splash"];
+
+ discoverySplashHash = data["discovery_splash"];
+ if (discoverySplashHash != null) {
+ discoverySplash = GuildDiscoverySplash(discoverySplashHash!, id);
} else {
discoverySplash = null;
}
- appIsOwner = data["owner"];
+
ownerId = data["owner_id"];
if (ownerId != null) {
- owner = members?.fetch(ownerId.toString());
+ owner = members!.fetch(ownerId.toString());
} else {
owner = null;
}
diff --git a/lib/src/classes/guild/unavailable_guild.dart b/lib/src/classes/guild/unavailable_guild.dart
index e977dcf..3bbfd09 100644
--- a/lib/src/classes/guild/unavailable_guild.dart
+++ b/lib/src/classes/guild/unavailable_guild.dart
@@ -1,11 +1,9 @@
-import "guild.dart";
-
+/// A guild involved in a server outage.
class UnavailableGuild {
+ /// The guild's id
late String id;
- late bool unavailable;
- late Guild? notUpdatedGuild;
+ /// Whether the guild is available to access. If it is not available, it indicates a server outage
+ bool unavailable = true;
- UnavailableGuild(this.id, { this.notUpdatedGuild }) {
- unavailable = true;
- }
+ UnavailableGuild(this.id);
}
\ No newline at end of file
diff --git a/lib/src/classes/images/base_image.dart b/lib/src/classes/images/base_image.dart
deleted file mode 100644
index bf0a9e1..0000000
--- a/lib/src/classes/images/base_image.dart
+++ /dev/null
@@ -1,4 +0,0 @@
-class BaseImage {
- late String hash;
- BaseImage(this.hash);
-}
\ No newline at end of file
diff --git a/lib/src/classes/images/guild_discovery_splash.dart b/lib/src/classes/images/guild_discovery_splash.dart
new file mode 100644
index 0000000..1c1171a
--- /dev/null
+++ b/lib/src/classes/images/guild_discovery_splash.dart
@@ -0,0 +1,10 @@
+class GuildDiscoverySplash {
+ late String id;
+ late String hash;
+
+ GuildDiscoverySplash(this.hash, this.id);
+
+ String url({String? extension = "jpeg"}) {
+ return "https://cdn.discordapp.com/discovery-splashes/$id/$hash.$extension";
+ }
+}
\ No newline at end of file
diff --git a/lib/src/classes/images/guild_icon.dart b/lib/src/classes/images/guild_icon.dart
index ab2c941..f2128ba 100644
--- a/lib/src/classes/images/guild_icon.dart
+++ b/lib/src/classes/images/guild_icon.dart
@@ -1,11 +1,8 @@
-import 'base_image.dart';
-
-class GuildIcon extends BaseImage {
+class GuildIcon {
late String id;
+ late String hash;
- GuildIcon(String hash, this.id) : super(hash) {
- this.hash = hash;
- }
+ GuildIcon(this.hash, this.id);
String url({String? extension = "jpeg"}) {
return "https://cdn.discordapp.com/icons/$id/$hash.$extension";
diff --git a/lib/src/classes/images/guild_splash.dart b/lib/src/classes/images/guild_splash.dart
index eb82b15..8932f6f 100644
--- a/lib/src/classes/images/guild_splash.dart
+++ b/lib/src/classes/images/guild_splash.dart
@@ -1,11 +1,8 @@
-import 'base_image.dart';
-
-class GuildSplash extends BaseImage {
+class GuildSplash {
late String id;
+ late String hash;
- GuildSplash(String hash, this.id) : super(hash) {
- this.hash = hash;
- }
+ GuildSplash(this.hash, this.id);
String url({String? extension = "jpeg"}) {
return "https://cdn.discordapp.com/splashes/$id/$hash.$extension";
diff --git a/lib/src/main.dart b/lib/src/main.dart
index a41f243..f23aa0c 100644
--- a/lib/src/main.dart
+++ b/lib/src/main.dart
@@ -21,7 +21,7 @@ final apiURL = "https://discord.com/api/v$version";
/// This function calculate the intent number required from the gateway.
/// [intents] is a list of multiples of two. You can use GatewayIntentBits class.
/// Return a number.
-int calculateIntents(List intents) {
+int intentsCalculator(List intents) {
int intentsNumber = 0;
for (var element in intents) {
@@ -45,6 +45,7 @@ class Client extends EventEmitter {
late User user;
late CommandManager commands;
+
/// Create a new Client.
/// [intents] Intents to enable for this connection, it's a multiple of two.
Client({this.intents = 0});
@@ -96,23 +97,10 @@ class Client extends EventEmitter {
});
}
- Sender sender = Sender(token);
- var i = await sender.fetchGuilds(withCounts: true);
+ late Sender sender;
+ late int n;
- List gg = [];
-
- for (dynamic g in i) {
- gg.add(Guild(sender, g));
- }
-
- channels = ChannelManager(sender, [], main: true);
-
- sender.channels = channels;
- guilds = GuildManager(sender, gg);
-
- int n = i.length;
-
- ws.listen((event) {
+ ws.listen((event) async {
event = json.decode(event);
switch (event["op"]) {
@@ -132,6 +120,24 @@ class Client extends EventEmitter {
switch (eventName) {
case "READY":
+ sender = Sender(token, event["d"]["user"]["id"]);
+ var i = await sender.fetchGuilds(withCounts: true);
+
+ List gg = [];
+
+ for (dynamic g in i) {
+ gg.add(Guild(sender, g));
+ }
+
+ channels = ChannelManager(sender, [], main: true);
+
+ sender.channels = channels;
+ guilds = GuildManager(sender, gg);
+
+ n = i.length;
+
+ commands["set"] = sender.setCommands;
+
resumeGatewayURL = event["d"]["resume_gateway_url"];
sessionID = event["d"]["session_id"];
user = User(event["d"]["user"]);
@@ -142,9 +148,6 @@ class Client extends EventEmitter {
case "GUILD_CREATE":
if (guilds.cache.has(event["d"]["id"])) {
Guild oldGuild = guilds.cache.get(event["d"]["id"]);
- if (oldGuild.appIsOwner != null) {
- event['d']["owner"] = oldGuild.appIsOwner;
- }
if (oldGuild.permissions != null) {
event['d']["permissions"] = oldGuild.permissions;
}
@@ -160,13 +163,11 @@ class Client extends EventEmitter {
}
break;
case "GUILD_DELETE":
- dynamic guild;
if (guilds.cache.has(event["d"]["id"])) {
- guild = guilds.cache.get(event["d"]["id"]);
- guilds.cache.set(event["d"]["id"], UnavailableGuild(event["d"]["id"], notUpdatedGuild: guild));
- } else {
- guild = event["d"];
+ guilds.cache.delete(event["d"]["id"]);
+ guilds.cache.set(event["d"]["id"], UnavailableGuild(event["d"]["id"],));
}
+ var guild = event["d"];
emit("GUILD_DELETE", guild);
break;
case "INTERACTION_CREATE":
diff --git a/lib/src/requests.dart b/lib/src/requests.dart
index 4d6aa39..9660b3a 100644
--- a/lib/src/requests.dart
+++ b/lib/src/requests.dart
@@ -38,11 +38,12 @@ Future requestWebSocketURL() async {
class Sender {
final String? _token;
+ final String id;
Map headers = {};
dynamic channels;
String? id;
- Sender(this._token) {
+ Sender(this._token, this.id) {
headers = {
"Content-Type": "application/json",
"Authorization": "Bot $_token",