Add raw gateway event dispatcher for slash commands; Fix commander dependencies
This commit is contained in:
parent
e0eb4c1d79
commit
206aaeb454
|
@ -12,3 +12,13 @@ environment:
|
|||
dependencies:
|
||||
nyxx: "^1.1.0-dev.1"
|
||||
logging: "^1.0.0-nullsafety.0"
|
||||
|
||||
dependency_overrides:
|
||||
http:
|
||||
git:
|
||||
url: git://github.com/dart-lang/http.git
|
||||
http_parser:
|
||||
git:
|
||||
url: git://github.com/dart-lang/http_parser.git
|
||||
nyxx:
|
||||
path: "../nyxx"
|
||||
|
|
|
@ -56,6 +56,8 @@ part "src/internal/interfaces/Mentionable.dart";
|
|||
|
||||
// EVENTS
|
||||
|
||||
part "src/events/RawEvent.dart";
|
||||
|
||||
part "src/events/MemberChunkEvent.dart";
|
||||
|
||||
part "src/events/DisconnectEvent.dart";
|
||||
|
|
|
@ -63,6 +63,9 @@ class ClientOptions {
|
|||
/// It could be either when shards disconnects or when bots process shuts down (look [shutdownHook].
|
||||
ShutdownShardHook? shutdownShardHook;
|
||||
|
||||
/// Allows to enable receiving raw gateway event
|
||||
bool dispatchRawShardEvent;
|
||||
|
||||
/// Makes a new `ClientOptions` object.
|
||||
ClientOptions(
|
||||
{this.allowedMentions,
|
||||
|
@ -76,7 +79,8 @@ class ClientOptions {
|
|||
this.guildSubscriptions = true,
|
||||
this.initialPresence,
|
||||
this.shutdownHook,
|
||||
this.shutdownShardHook });
|
||||
this.shutdownShardHook,
|
||||
this.dispatchRawShardEvent = false });
|
||||
}
|
||||
|
||||
/// When identifying to the gateway, you can specify an intents parameter which
|
||||
|
|
12
nyxx/lib/src/events/RawEvent.dart
Normal file
12
nyxx/lib/src/events/RawEvent.dart
Normal file
|
@ -0,0 +1,12 @@
|
|||
part of nyxx;
|
||||
|
||||
/// Raw gateway event
|
||||
class RawEvent {
|
||||
/// Shard where event was received
|
||||
final Shard shard;
|
||||
|
||||
/// Raw event data as deserialized json
|
||||
final Map<String, dynamic> rawData;
|
||||
|
||||
RawEvent._new(this.shard, this.rawData);
|
||||
}
|
|
@ -205,6 +205,10 @@ class Shard implements Disposable {
|
|||
}
|
||||
|
||||
Future<void> _dispatch(Map<String, dynamic> rawPayload) async {
|
||||
if (this.manager._ws._client._options.dispatchRawShardEvent) {
|
||||
this.manager._onRawEvent.add(RawEvent._new(this, rawPayload));
|
||||
}
|
||||
|
||||
switch (rawPayload["op"] as int) {
|
||||
case OPCodes.heartbeatAck:
|
||||
this._heartbeatAckReceived = true;
|
||||
|
|
|
@ -18,9 +18,13 @@ class ShardManager implements Disposable {
|
|||
/// Emitted when shard receives member chunk.
|
||||
late final Stream<MemberChunkEvent> onMemberChunk = this._onMemberChunk.stream;
|
||||
|
||||
/// Raw gateway payloads. You have set `dispatchRawShardEvent` in [ClientOptions] to true otherwise stream won't receive any events.
|
||||
late final Stream<RawEvent> rawEvent = this._onRawEvent.stream;
|
||||
|
||||
final StreamController<Shard> _onConnect = StreamController.broadcast();
|
||||
final StreamController<Shard> _onDisconnect = StreamController.broadcast();
|
||||
final StreamController<MemberChunkEvent> _onMemberChunk = StreamController.broadcast();
|
||||
final StreamController<RawEvent> _onRawEvent = StreamController.broadcast();
|
||||
|
||||
final Logger _logger = Logger("Shard Manager");
|
||||
|
||||
|
|
Loading…
Reference in a new issue