Skip to content

Commit

Permalink
fix: add support for interaction webhooks (#397)
Browse files Browse the repository at this point in the history
  • Loading branch information
Lexedia authored Nov 15, 2022
1 parent 957bbc3 commit a255e3a
Showing 3 changed files with 18 additions and 5 deletions.
11 changes: 9 additions & 2 deletions lib/src/core/guild/webhook.dart
Original file line number Diff line number Diff line change
@@ -127,7 +127,7 @@ class Webhook extends SnowflakeEntity implements IWebhook {
String get username => name.toString();

@override
int get discriminator => -1;
late final int discriminator;

@override
bool get bot => true;
@@ -139,11 +139,18 @@ class Webhook extends SnowflakeEntity implements IWebhook {
@override
final INyxx client;

@override
bool get isInteractionWebhook => discriminator != -1;

@override
String get formattedDiscriminator => discriminator.toString().padLeft(4, "0");

/// Creates an instance of [Webhook]
Webhook(RawApiMap raw, this.client) : super(Snowflake(raw["id"] as String)) {
name = raw["name"] as String?;
name = raw["name"] as String? ?? raw['username'] as String?;
token = raw["token"] as String? ?? "";
avatarHash = raw["avatar"] as String?;
discriminator = int.tryParse(raw['discriminator'] as String? ?? '-1') ?? -1;

if (raw["type"] != null) {
type = WebhookType.from(raw["type"] as int);
6 changes: 3 additions & 3 deletions lib/src/core/user/user.dart
Original file line number Diff line number Diff line change
@@ -20,9 +20,6 @@ abstract class IUser implements SnowflakeEntity, ISend, Mentionable, IMessageAut
/// Reference to client
INyxx get client;

/// Formatted discriminator with leading zeros if needed
String get formattedDiscriminator;

/// The user's avatar hash.
String? get avatar;

@@ -118,6 +115,9 @@ class User extends SnowflakeEntity implements IUser {
@override
late final DiscordColor? accentColor;

@override
bool get isInteractionWebhook => false;

/// Creates an instance of [User]
User(this.client, RawApiMap raw) : super(Snowflake(raw["id"])) {
username = raw["username"] as String;
6 changes: 6 additions & 0 deletions lib/src/internal/interfaces/message_author.dart
Original file line number Diff line number Diff line change
@@ -15,6 +15,12 @@ abstract class IMessageAuthor implements SnowflakeEntity {
/// User tag: `l7ssha#6712`
String get tag;

/// Whether this [IMessageAuthor] is a webhook received by an interaction.
bool get isInteractionWebhook;

/// Formatted discriminator with leading zeros if needed
String get formattedDiscriminator;

/// Url to user avatar
String avatarURL({String format = "webp", int size = 128});
}

0 comments on commit a255e3a

Please sign in to comment.