Skip to content
This repository was archived by the owner on Dec 1, 2021. It is now read-only.

Commit 173cab9

Browse files
committed
Added raw event handlers
1 parent 47e7264 commit 173cab9

File tree

2 files changed

+213
-33
lines changed

2 files changed

+213
-33
lines changed

include/aegis/core.hpp

Lines changed: 110 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -568,107 +568,143 @@ class core
568568
using voice_server_update_t = std::function<void(gateway::events::voice_server_update obj)>;
569569
using webhooks_update_t = std::function<void(gateway::events::webhooks_update obj)>;
570570

571+
using raw_event_t = std::function<void(json obj, shards::shard * _shard)>;
572+
571573
/// TYPING_START callback
572574
void set_on_typing_start(typing_start_t cb) { i_typing_start = cb; }
575+
void set_on_typing_start_raw(raw_event_t cb) { i_typing_start_raw = cb; }
573576

574577
/// MESSAGE_CREATE callback
575578
void set_on_message_create(message_create_t cb) { i_message_create = cb; }
579+
void set_on_message_create_raw(raw_event_t cb) { i_message_create_raw = cb; }
576580

577581
/// MESSAGE_CREATE callback for direct messages
578582
void set_on_message_create_dm(message_create_t cb) { i_message_create_dm = cb; }
583+
void set_on_message_create_dm_raw(raw_event_t cb) { i_message_create_dm_raw = cb; }
579584

580585
/// MESSAGE_UPDATE callback
581586
void set_on_message_update(message_update_t cb) { i_message_update = cb; }
587+
void set_on_message_update_raw(raw_event_t cb) { i_message_update_raw = cb; }
582588

583589
/// MESSAGE_DELETE callback
584590
void set_on_message_delete(message_delete_t cb) { i_message_delete = cb; }
591+
void set_on_message_delete_raw(raw_event_t cb) { i_message_delete_raw = cb; }
585592

586593
/// MESSAGE_DELETE_BULK callback
587594
void set_on_message_delete_bulk(message_delete_bulk_t cb) { i_message_delete_bulk = cb; }
595+
void set_on_message_delete_bulk_raw(raw_event_t cb) { i_message_delete_bulk_raw = cb; }
588596

589597
/// GUILD_CREATE callback
590598
void set_on_guild_create(guild_create_t cb) { i_guild_create = cb; }
599+
void set_on_guild_create_raw(raw_event_t cb) { i_guild_create_raw = cb; }
591600

592601
/// GUILD_UPDATE callback
593602
void set_on_guild_update(guild_update_t cb) { i_guild_update = cb; }
603+
void set_on_guild_update_raw(raw_event_t cb) { i_guild_update_raw = cb; }
594604

595605
/// GUILD_DELETE callback
596606
void set_on_guild_delete(guild_delete_t cb) { i_guild_delete = cb; }
607+
void set_on_guild_delete_raw(raw_event_t cb) { i_guild_delete_raw = cb; }
597608

598609
/// MESSAGE_REACTION_ADD callback
599610
void set_on_message_reaction_add(message_reaction_add_t cb) { i_message_reaction_add = cb; }
611+
void set_on_message_reaction_add_raw(raw_event_t cb) { i_message_reaction_add_raw = cb; }
600612

601613
/// MESSAGE_REACTION_REMOVE callback
602614
void set_on_message_reaction_remove(message_reaction_remove_t cb) { i_message_reaction_remove = cb; }
615+
void set_on_message_reaction_remove_raw(raw_event_t cb) { i_message_reaction_remove_raw = cb; }
603616

604617
/// MESSAGE_REACTION_REMOVE_ALL callback
605618
void set_on_message_reaction_remove_all(message_reaction_remove_all_t cb) { i_message_reaction_remove_all = cb; }
619+
void set_on_message_reaction_remove_all_raw(raw_event_t cb) { i_message_reaction_remove_all_raw = cb; }
606620

607621
/// USER_UPDATE callback
608622
void set_on_user_update(user_update_t cb) { i_user_update = cb; }
623+
void set_on_user_update_raw(raw_event_t cb) { i_user_update_raw = cb; }
609624

610625
/// READY callback
611626
void set_on_ready(ready_t cb) { i_ready = cb; }
627+
void set_on_ready_raw(raw_event_t cb) { i_ready_raw = cb; }
612628

613629
/// RESUME callback
614630
void set_on_resumed(resumed_t cb) { i_resumed = cb; }
631+
void set_on_resumed_raw(raw_event_t cb) { i_resumed_raw = cb; }
615632

616633
/// CHANNEL_CREATE callback
617634
void set_on_channel_create(channel_create_t cb) { i_channel_create = cb; }
635+
void set_on_channel_create_raw(raw_event_t cb) { i_channel_create_raw = cb; }
618636

619637
/// CHANNEL_UPDATE callback
620638
void set_on_channel_update(channel_update_t cb) { i_channel_update = cb; }
639+
void set_on_channel_update_raw(raw_event_t cb) { i_channel_update_raw = cb; }
621640

622641
/// CHANNEL_DELETE callback
623642
void set_on_channel_delete(channel_delete_t cb) { i_channel_delete = cb; }
643+
void set_on_channel_delete_raw(raw_event_t cb) { i_channel_delete_raw = cb; }
624644

625645
/// CHANNEL_PINS_UPDATE callback
626646
void set_on_channel_pins_update(channel_pins_update_t cb) { i_channel_pins_update = cb; }
647+
void set_on_channel_pins_update_raw(raw_event_t cb) { i_channel_pins_update_raw = cb; }
627648

628649
/// GUILD_BAN_ADD callback
629650
void set_on_guild_ban_add(guild_ban_add_t cb) { i_guild_ban_add = cb; }
651+
void set_on_guild_ban_add_raw(raw_event_t cb) { i_guild_ban_add_raw = cb; }
630652

631653
/// GUILD_BAN_REMOVE callback
632654
void set_on_guild_ban_remove(guild_ban_remove_t cb) { i_guild_ban_remove = cb; }
655+
void set_on_guild_ban_remove_raw(raw_event_t cb) { i_guild_ban_remove_raw = cb; }
633656

634657
/// GUILD_EMOJIS_UPDATE callback
635658
void set_on_guild_emojis_update(guild_emojis_update_t cb) { i_guild_emojis_update = cb; }
659+
void set_on_guild_emojis_update_raw(raw_event_t cb) { i_guild_emojis_update_raw = cb; }
636660

637661
/// GUILD_INTEGRATIONS_UPDATE callback
638662
void set_on_guild_integrations_update(guild_integrations_update_t cb) { i_guild_integrations_update = cb; }
663+
void set_on_guild_integrations_update_raw(raw_event_t cb) { i_guild_integrations_update_raw = cb; }
639664

640665
/// GUILD_MEMBER_ADD callback
641666
void set_on_guild_member_add(guild_member_add_t cb) { i_guild_member_add = cb; }
667+
void set_on_guild_member_add_raw(raw_event_t cb) { i_guild_member_add_raw = cb; }
642668

643669
/// GUILD_MEMBER_REMOVE callback
644670
void set_on_guild_member_remove(guild_member_remove_t cb) { i_guild_member_remove = cb; }
671+
void set_on_guild_member_remove_raw(raw_event_t cb) { i_guild_member_remove_raw = cb; }
645672

646673
/// GUILD_MEMBER_UPDATE callback
647674
void set_on_guild_member_update(guild_member_update_t cb) { i_guild_member_update = cb; }
675+
void set_on_guild_member_update_raw(raw_event_t cb) { i_guild_member_update_raw = cb; }
648676

649677
/// GUILD_MEMBERS_CHUNK callback
650678
void set_on_guild_member_chunk(guild_members_chunk_t cb) { i_guild_members_chunk = cb; }
679+
void set_on_guild_member_chunk_raw(raw_event_t cb) { i_guild_members_chunk_raw = cb; }
651680

652681
/// GUILD_ROLE_CREATE callback
653682
void set_on_guild_role_create(guild_role_create_t cb) { i_guild_role_create = cb; }
683+
void set_on_guild_role_create_raw(raw_event_t cb) { i_guild_role_create_raw = cb; }
654684

655685
/// GUILD_ROLE_UPDATE callback
656686
void set_on_guild_role_update(guild_role_update_t cb) { i_guild_role_update = cb; }
687+
void set_on_guild_role_update_raw(raw_event_t cb) { i_guild_role_update_raw = cb; }
657688

658689
/// GUILD_ROLE_DELETE callback
659690
void set_on_guild_role_delete(guild_role_delete_t cb) { i_guild_role_delete = cb; }
691+
void set_on_guild_role_delete_raw(raw_event_t cb) { i_guild_role_delete_raw = cb; }
660692

661693
/// PRESENCE_UPDATE callback
662694
void set_on_presence_update(presence_update_t cb) { i_presence_update = cb; }
695+
void set_on_presence_update_raw(raw_event_t cb) { i_presence_update_raw = cb; }
663696

664697
/// VOICE_STATE_UPDATE callback
665698
void set_on_voice_state_update(voice_state_update_t cb) { i_voice_state_update = cb; }
699+
void set_on_voice_state_update_raw(raw_event_t cb) { i_voice_state_update_raw = cb; }
666700

667701
/// VOICE_SERVER_UPDATE callback
668702
void set_on_voice_server_update(voice_server_update_t cb) { i_voice_server_update = cb; }
703+
void set_on_voice_server_update_raw(raw_event_t cb) { i_voice_server_update_raw = cb; }
669704

670705
/// WEBHOOKS_UPDATE callback
671706
void set_on_webhooks_update(webhooks_update_t cb) { i_webhooks_update = cb; }
707+
void set_on_webhooks_update_raw(raw_event_t cb) { i_webhooks_update_raw = cb; }
672708

673709
/// Shard disconnect callback
674710
void set_on_shard_disconnect(std::function<void(aegis::shards::shard*)> cb)
@@ -882,6 +918,8 @@ class core
882918

883919
AEGIS_DECL void _thread_track(thread_state * t_state);
884920

921+
#pragma region event handlers
922+
//preprocessed object events
885923
typing_start_t i_typing_start;
886924
message_create_t i_message_create;
887925
message_create_t i_message_create_dm;
@@ -917,6 +955,78 @@ class core
917955
voice_server_update_t i_voice_server_update;
918956
webhooks_update_t i_webhooks_update;
919957

958+
//raw json events
959+
raw_event_t i_typing_start_raw;
960+
raw_event_t i_message_create_raw;
961+
raw_event_t i_message_create_dm_raw;
962+
raw_event_t i_message_update_raw;
963+
raw_event_t i_message_delete_raw;
964+
raw_event_t i_message_delete_bulk_raw;
965+
raw_event_t i_guild_create_raw;
966+
raw_event_t i_guild_update_raw;
967+
raw_event_t i_guild_delete_raw;
968+
raw_event_t i_message_reaction_add_raw;
969+
raw_event_t i_message_reaction_remove_raw;
970+
raw_event_t i_message_reaction_remove_all_raw;
971+
raw_event_t i_user_update_raw;
972+
raw_event_t i_ready_raw;
973+
raw_event_t i_resumed_raw;
974+
raw_event_t i_channel_create_raw;
975+
raw_event_t i_channel_update_raw;
976+
raw_event_t i_channel_delete_raw;
977+
raw_event_t i_channel_pins_update_raw;
978+
raw_event_t i_guild_ban_add_raw;
979+
raw_event_t i_guild_ban_remove_raw;
980+
raw_event_t i_guild_emojis_update_raw;
981+
raw_event_t i_guild_integrations_update_raw;
982+
raw_event_t i_guild_member_add_raw;
983+
raw_event_t i_guild_member_remove_raw;
984+
raw_event_t i_guild_member_update_raw;
985+
raw_event_t i_guild_members_chunk_raw;
986+
raw_event_t i_guild_role_create_raw;
987+
raw_event_t i_guild_role_update_raw;
988+
raw_event_t i_guild_role_delete_raw;
989+
raw_event_t i_presence_update_raw;
990+
raw_event_t i_voice_state_update_raw;
991+
raw_event_t i_voice_server_update_raw;
992+
raw_event_t i_webhooks_update_raw;
993+
994+
995+
AEGIS_DECL void ws_presence_update(const json& result, shards::shard* _shard);
996+
AEGIS_DECL void ws_typing_start(const json& result, shards::shard* _shard);
997+
AEGIS_DECL void ws_message_create(const json& result, shards::shard* _shard);
998+
AEGIS_DECL void ws_message_update(const json& result, shards::shard* _shard);
999+
AEGIS_DECL void ws_guild_create(const json& result, shards::shard* _shard);
1000+
AEGIS_DECL void ws_guild_update(const json& result, shards::shard* _shard);
1001+
AEGIS_DECL void ws_guild_delete(const json& result, shards::shard* _shard);
1002+
AEGIS_DECL void ws_message_reaction_add(const json& result, shards::shard* _shard);
1003+
AEGIS_DECL void ws_message_reaction_remove(const json& result, shards::shard* _shard);
1004+
AEGIS_DECL void ws_message_reaction_remove_all(const json& result, shards::shard* _shard);
1005+
AEGIS_DECL void ws_message_delete(const json& result, shards::shard* _shard);
1006+
AEGIS_DECL void ws_message_delete_bulk(const json& result, shards::shard* _shard);
1007+
AEGIS_DECL void ws_user_update(const json& result, shards::shard* _shard);
1008+
AEGIS_DECL void ws_resumed(const json& result, shards::shard* _shard);
1009+
AEGIS_DECL void ws_ready(const json& result, shards::shard* _shard);
1010+
AEGIS_DECL void ws_channel_create(const json& result, shards::shard* _shard);
1011+
AEGIS_DECL void ws_channel_update(const json& result, shards::shard* _shard);
1012+
AEGIS_DECL void ws_channel_delete(const json& result, shards::shard* _shard);
1013+
AEGIS_DECL void ws_channel_pins_update(const json& result, shards::shard* _shard);
1014+
AEGIS_DECL void ws_guild_ban_add(const json& result, shards::shard* _shard);
1015+
AEGIS_DECL void ws_guild_ban_remove(const json& result, shards::shard* _shard);
1016+
AEGIS_DECL void ws_guild_emojis_update(const json& result, shards::shard* _shard);
1017+
AEGIS_DECL void ws_guild_integrations_update(const json& result, shards::shard* _shard);
1018+
AEGIS_DECL void ws_guild_member_add(const json& result, shards::shard* _shard);
1019+
AEGIS_DECL void ws_guild_member_remove(const json& result, shards::shard* _shard);
1020+
AEGIS_DECL void ws_guild_member_update(const json& result, shards::shard* _shard);
1021+
AEGIS_DECL void ws_guild_members_chunk(const json& result, shards::shard* _shard);
1022+
AEGIS_DECL void ws_guild_role_create(const json& result, shards::shard* _shard);
1023+
AEGIS_DECL void ws_guild_role_update(const json& result, shards::shard* _shard);
1024+
AEGIS_DECL void ws_guild_role_delete(const json& result, shards::shard* _shard);
1025+
AEGIS_DECL void ws_voice_server_update(const json& result, shards::shard* _shard);
1026+
AEGIS_DECL void ws_voice_state_update(const json& result, shards::shard* _shard);
1027+
AEGIS_DECL void ws_webhooks_update(const json& result, shards::shard* _shard);
1028+
#pragma endregion
1029+
9201030
AEGIS_DECL void setup_gateway();
9211031
AEGIS_DECL void keep_alive(const asio::error_code & error, const std::chrono::milliseconds ms, shards::shard * _shard);
9221032

@@ -929,39 +1039,6 @@ class core
9291039
friend class channel;
9301040
//friend class shard;
9311041

932-
AEGIS_DECL void ws_presence_update(const json & result, shards::shard * _shard);
933-
AEGIS_DECL void ws_typing_start(const json & result, shards::shard * _shard);
934-
AEGIS_DECL void ws_message_create(const json & result, shards::shard * _shard);
935-
AEGIS_DECL void ws_message_update(const json & result, shards::shard * _shard);
936-
AEGIS_DECL void ws_guild_create(const json & result, shards::shard * _shard);
937-
AEGIS_DECL void ws_guild_update(const json & result, shards::shard * _shard);
938-
AEGIS_DECL void ws_guild_delete(const json & result, shards::shard * _shard);
939-
AEGIS_DECL void ws_message_reaction_add(const json & result, shards::shard * _shard);
940-
AEGIS_DECL void ws_message_reaction_remove(const json & result, shards::shard * _shard);
941-
AEGIS_DECL void ws_message_reaction_remove_all(const json & result, shards::shard * _shard);
942-
AEGIS_DECL void ws_message_delete(const json & result, shards::shard * _shard);
943-
AEGIS_DECL void ws_message_delete_bulk(const json & result, shards::shard * _shard);
944-
AEGIS_DECL void ws_user_update(const json & result, shards::shard * _shard);
945-
AEGIS_DECL void ws_resumed(const json & result, shards::shard * _shard);
946-
AEGIS_DECL void ws_ready(const json & result, shards::shard * _shard);
947-
AEGIS_DECL void ws_channel_create(const json & result, shards::shard * _shard);
948-
AEGIS_DECL void ws_channel_update(const json & result, shards::shard * _shard);
949-
AEGIS_DECL void ws_channel_delete(const json & result, shards::shard * _shard);
950-
AEGIS_DECL void ws_channel_pins_update(const json & result, shards::shard * _shard);
951-
AEGIS_DECL void ws_guild_ban_add(const json & result, shards::shard * _shard);
952-
AEGIS_DECL void ws_guild_ban_remove(const json & result, shards::shard * _shard);
953-
AEGIS_DECL void ws_guild_emojis_update(const json & result, shards::shard * _shard);
954-
AEGIS_DECL void ws_guild_integrations_update(const json & result, shards::shard * _shard);
955-
AEGIS_DECL void ws_guild_member_add(const json & result, shards::shard * _shard);
956-
AEGIS_DECL void ws_guild_member_remove(const json & result, shards::shard * _shard);
957-
AEGIS_DECL void ws_guild_member_update(const json & result, shards::shard * _shard);
958-
AEGIS_DECL void ws_guild_members_chunk(const json & result, shards::shard * _shard);
959-
AEGIS_DECL void ws_guild_role_create(const json & result, shards::shard * _shard);
960-
AEGIS_DECL void ws_guild_role_update(const json & result, shards::shard * _shard);
961-
AEGIS_DECL void ws_guild_role_delete(const json & result, shards::shard * _shard);
962-
AEGIS_DECL void ws_voice_server_update(const json & result, shards::shard * _shard);
963-
AEGIS_DECL void ws_voice_state_update(const json & result, shards::shard * _shard);
964-
AEGIS_DECL void ws_webhooks_update(const json & result, shards::shard * _shard);
9651042

9661043
AEGIS_DECL void on_message(websocketpp::connection_hdl hdl, std::string msg, shards::shard * _shard);
9671044
AEGIS_DECL void on_connect(websocketpp::connection_hdl hdl, shards::shard * _shard);

0 commit comments

Comments
 (0)