diff --git a/lib/src/commands.dart b/lib/src/commands.dart index 082704f..98f3bda 100644 --- a/lib/src/commands.dart +++ b/lib/src/commands.dart @@ -55,7 +55,7 @@ final Logger logger = Logger('Commands'); /// - [addCommand], for adding commands to your bot; /// - [check], for adding checks to your bot; /// - [MessageCommand] and [UserCommand], for creating Message and User Commands respectively. -class CommandsPlugin extends NyxxPlugin implements CommandGroup { +class CommandsPlugin extends NyxxPlugin implements CommandGroup { /// A function called to determine the prefix for a specific message. /// /// This function should return a [Pattern] that should match the start of the message content if @@ -149,7 +149,7 @@ class CommandsPlugin extends NyxxPlugin implements CommandGroup registeredCommands = []; - final Set _attachedClients = {}; + final Set _attachedClients = {}; /// Create a new [CommandsPlugin]. CommandsPlugin({ @@ -167,7 +167,7 @@ class CommandsPlugin extends NyxxPlugin implements CommandGroup afterConnect(NyxxGateway client) async { + Future afterConnect(NyxxRest client) async { _attachedClients.add(client); client.onMessageComponentInteraction @@ -288,12 +288,12 @@ class CommandsPlugin extends NyxxPlugin implements CommandGroup command.manager.client == client); _attachedClients.remove(client); } - Future _syncCommands(NyxxGateway client) async { + Future _syncCommands(NyxxRest client) async { final builders = await _buildCommands(); final commands = await Future.wait(builders.entries.map( diff --git a/lib/src/context/base.dart b/lib/src/context/base.dart index 98c2c4c..4f70425 100644 --- a/lib/src/context/base.dart +++ b/lib/src/context/base.dart @@ -32,7 +32,7 @@ abstract interface class ContextData { CommandsPlugin get commands; /// The client that emitted the event triggering this context's creation. - NyxxGateway get client; + NyxxRest get client; } /// Data about a context in which a command was executed. @@ -406,7 +406,7 @@ class ContextBase implements ContextData { @override final CommandsPlugin commands; @override - final NyxxGateway client; + final NyxxRest client; ContextBase({ required this.user, diff --git a/lib/src/context/context_manager.dart b/lib/src/context/context_manager.dart index 25beaaf..644a582 100644 --- a/lib/src/context/context_manager.dart +++ b/lib/src/context/context_manager.dart @@ -65,7 +65,7 @@ class ContextManager { member: member, user: user, command: command, - client: message.manager.client as NyxxGateway, + client: message.manager.client, prefix: prefix, message: message, rawArguments: contentView.remaining, @@ -100,7 +100,7 @@ class ContextManager { member: member, user: user, command: command, - client: interaction.manager.client as NyxxGateway, + client: interaction.manager.client, interaction: interaction, rawArguments: rawArguments, ); @@ -117,7 +117,7 @@ class ContextManager { Member? member = interaction.member; User user = member?.user ?? interaction.user!; - final client = interaction.manager.client as NyxxGateway; + final client = interaction.manager.client; User targetUser = await client.users[interaction.data.targetId!].get(); Guild? guild = await interaction.guild?.get(); @@ -153,7 +153,7 @@ class ContextManager { return MessageContext( commands: commands, - client: interaction.manager.client as NyxxGateway, + client: interaction.manager.client, interaction: interaction, command: command, channel: channel, @@ -194,7 +194,7 @@ class ContextManager { member: member, user: user, command: command, - client: interaction.manager.client as NyxxGateway, + client: interaction.manager.client, interaction: interaction, option: focusedOption, currentValue: focusedOption.value.toString(), @@ -216,7 +216,7 @@ class ContextManager { guild: await interaction.guild?.get(), channel: await interaction.channel!.get() as TextChannel, commands: commands, - client: interaction.manager.client as NyxxGateway, + client: interaction.manager.client, interaction: interaction, ); } @@ -238,7 +238,7 @@ class ContextManager { guild: await interaction.guild?.get(), channel: await interaction.channel!.get() as TextChannel, commands: commands, - client: interaction.manager.client as NyxxGateway, + client: interaction.manager.client, interaction: interaction, selected: selected, ); @@ -257,7 +257,7 @@ class ContextManager { guild: await interaction.guild?.get(), channel: await interaction.channel!.get() as TextChannel, commands: commands, - client: interaction.manager.client as NyxxGateway, + client: interaction.manager.client, interaction: interaction, ); } diff --git a/lib/src/converters/built_in/member.dart b/lib/src/converters/built_in/member.dart index 474b2ec..90973e9 100644 --- a/lib/src/converters/built_in/member.dart +++ b/lib/src/converters/built_in/member.dart @@ -18,59 +18,61 @@ Future snowflakeToMember(Snowflake snowflake, ContextData context) asyn Future convertMember(StringView view, ContextData context) async { String word = view.getQuotedWord(); - if (context.guild != null) { - Stream named = context.client.gateway.listGuildMembers( - context.guild!.id, - query: word, - limit: 100, - ); + if (context.guild == null) { + return null; + } - List usernameExact = []; - List nickExact = []; + List named = context.client is NyxxGateway + ? await (context.client.gateway as Gateway) + .listGuildMembers(context.guild!.id, query: word, limit: 100) + .toList() + : await context.guild!.members.search(word, limit: 100); - List usernameCaseInsensitive = []; - List nickCaseInsensitive = []; + List usernameExact = []; + List nickExact = []; - List usernameStart = []; - List nickStart = []; + List usernameCaseInsensitive = []; + List nickCaseInsensitive = []; - await for (final member in named) { - User user = await context.client.users.get(member.id); + List usernameStart = []; + List nickStart = []; - if (user.username == word) { - usernameExact.add(member); - } - if (user.username.toLowerCase() == word.toLowerCase()) { - usernameCaseInsensitive.add(member); + for (final member in named) { + User user = await context.client.users.get(member.id); + + if (user.username == word) { + usernameExact.add(member); + } + if (user.username.toLowerCase() == word.toLowerCase()) { + usernameCaseInsensitive.add(member); + } + if (user.username.toLowerCase().startsWith(word.toLowerCase())) { + usernameStart.add(member); + } + + if (member.nick != null) { + if (member.nick! == word) { + nickExact.add(member); } - if (user.username.toLowerCase().startsWith(word.toLowerCase())) { - usernameStart.add(member); + if (member.nick!.toLowerCase() == word.toLowerCase()) { + nickCaseInsensitive.add(member); } - - if (member.nick != null) { - if (member.nick! == word) { - nickExact.add(member); - } - if (member.nick!.toLowerCase() == word.toLowerCase()) { - nickCaseInsensitive.add(member); - } - if (member.nick!.toLowerCase().startsWith(word.toLowerCase())) { - nickStart.add(member); - } + if (member.nick!.toLowerCase().startsWith(word.toLowerCase())) { + nickStart.add(member); } } + } - for (final list in [ - usernameExact, - nickExact, - usernameCaseInsensitive, - nickCaseInsensitive, - usernameStart, - nickStart - ]) { - if (list.length == 1) { - return list.first; - } + for (final list in [ + usernameExact, + nickExact, + usernameCaseInsensitive, + nickCaseInsensitive, + usernameStart, + nickStart + ]) { + if (list.length == 1) { + return list.first; } } return null; diff --git a/lib/src/event_manager.dart b/lib/src/event_manager.dart index 4f836f7..7ad9bf7 100644 --- a/lib/src/event_manager.dart +++ b/lib/src/event_manager.dart @@ -156,7 +156,7 @@ class EventManager { return; } - if (message.author.id == await event.gateway.client.users.fetchCurrentUser() && + if (message.author.id == await event.client.users.fetchCurrentUser() && !context.command.resolvedOptions.acceptSelfCommands!) { return; } diff --git a/lib/src/util/util.dart b/lib/src/util/util.dart index 228b76d..4e9973d 100644 --- a/lib/src/util/util.dart +++ b/lib/src/util/util.dart @@ -265,8 +265,7 @@ Future Function(MessageCreateEvent) mentionOr( RegExpMatch? match = _mentionPattern.firstMatch(event.message.content); if (match != null) { - if (int.parse(match.group(1)!) == - (await event.gateway.client.users.fetchCurrentUser()).id.value) { + if (int.parse(match.group(1)!) == (await event.client.users.fetchCurrentUser()).id.value) { return match.group(0)!; } } diff --git a/pubspec.yaml b/pubspec.yaml index 301f8e5..a4b4cd9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -28,3 +28,9 @@ dev_dependencies: executables: nyxx-compile: compile + +dependency_overrides: + nyxx: + git: + url: https://github.com/nyxx-discord/nyxx.git + ref: feature/remove-event-depenency-on-gateway \ No newline at end of file