@@ -14,32 +14,42 @@ void ThreeDSDiscordClient::addNewMessage(SleepyDiscord::Message message) {
1414}
1515
1616void ThreeDSDiscordClient::onMessage (SleepyDiscord::Message message) {
17+ if (servers.size () == 0 || isCurrentChannelHandleValid == false ) return ;
1718 if (message.channel_id == getCurrentChannel ().id ) {
1819 addNewMessage (message);
1920 }
2021}
2122
2223void ThreeDSDiscordClient::onServer (SleepyDiscord::Server server) {
23- servers.push_back (server);
24- printf (" Added %s to the server list\n " , server.name .c_str ());
24+ addServer (server);
2525}
2626
2727void ThreeDSDiscordClient::switchServer () {
2828 if (servers.size () == 0 ) return ;
29- // change current server
30- if (servers.size () <= ++currentServerHandle)
31- currentServerHandle = 0 ;
32- // change channel to first channel in that server
33- for (currentChannelHandle = 0 ; currentChannelHandle < getCurrentServer ().channels .size (); ++currentChannelHandle) {
34- if (getCurrentChannel ().position == 0 ) break ;
35- }
36- printf (" Switched channel to %s #%s\n " , getCurrentServer ().name .c_str (), getCurrentChannel ().name .c_str ());
29+ // change current server
30+ if (servers.size () <= ++currentServerHandle)
31+ currentServerHandle = 0 ;
32+ isCurrentChannelHandleValid = false ;
33+ printf (" Switched Server to %s.\n " , getCurrentServer ().name .c_str ());
3734}
3835
3936void ThreeDSDiscordClient::switchChannel () {
4037 if (servers.size () == 0 ) return ;
38+ unsigned int newChannelPosition;
39+ /* if the current channel handle is invalid
40+ then make it valid*/
41+ if (isCurrentChannelHandleValid == false ) {
42+ if (getCurrentServer ().channels .size () == 0 )
43+ getCurrentServer ().channels = GetServerChannels (getCurrentServer ().id );
44+ // change channel to first channel in that server
45+ newChannelPosition = 0 ;
46+ isCurrentChannelHandleValid = true ;
47+ } else {
48+ newChannelPosition = getCurrentChannel ().position + 1 ;
49+ }
50+
4151 // get the position of the next channel
42- unsigned int newChannelPosition = getCurrentChannel (). position + 1 ;
52+
4353 const unsigned int channelCount = getCurrentServer ().channels .size ();
4454 if (channelCount <= newChannelPosition)
4555 newChannelPosition = 0 ;
@@ -100,4 +110,14 @@ void ThreeDSDiscordClient::launchKeyboardAndSentMessage() {
100110 }
101111 // send message
102112 sendMessage (getCurrentChannel ().id , std::string (buffer.begin (), iteratorToZero));
103- }
113+ }
114+
115+ void ThreeDSDiscordClient::onReady (std::string * jsonMessage) {
116+ printf (" ready\n " );
117+ if (!isBot ()) {
118+ std::vector<SleepyDiscord::Server> servers = getServers ();
119+ for (SleepyDiscord::Server server : servers) {
120+ addServer (server);
121+ }
122+ }
123+ }
0 commit comments