IntroductionThis is a plugin used to get discord text messages. It can also send texts-
SendMessage("VCMP Server is online");
ConfigurationIn server.cfg, you add
token and
channel :
(https://i.imgur.com/QB8MXin.png)
Creating a bot and getting token1. Head to https://discord.com/developers/applications.
(https://i.imgur.com/lJfep45.png)
2. Click on
New Application(https://i.imgur.com/HODgPiR.png)
3. Select
Bot on left panel.
(https://i.imgur.com/149Ww3v.png)
4. Scroll down to
MESSAGE CONTENT INTENT(https://i.imgur.com/pL8RiA6.png)
5. Click on
Save Changes (https://i.imgur.com/nmIbnF6.png)
6. After Saving changes, scroll down and select permissions:
- Read Messages/View Channels
- Send Messages
(https://i.imgur.com/mJoGMtw.png)
7. Now at last, scroll up and Click on
RESET TOKEN(https://i.imgur.com/kRCUrZJ.png)
Click on
Yes, do it(https://i.imgur.com/kftNGFQ.png)
Atlast, copy the
token(https://i.imgur.com/NDT7Wca.png)
This is the token you should provide in server.cfg mentioned on topchannelBelow you can see what is your channel id. We do not need Server ID.
(https://i.imgur.com/cIrrL6x.png)
This is the channel you should provide in server.cfg mentioned on topAdding bot as a member to your Discord Server1. Go to
General Information and copy the
Application ID:(https://i.imgur.com/o4E68Ik.png)
2. Open a new tab and go to
https://discordapp.com/api/oauth2/authorize?client_id=<YOUR_APPLICATION_ID>&permissions=0&scope=bot(https://i.imgur.com/PK7Ir2W.png)
3. Select your
Server from dropdown list and click on
Authorize on bottom.
4. Now, you can see the bot in your channel as offline.
Functions of DiscordSync- SendMessage( [string] message )
Events/Callbacks- onDiscordMessage( [string]nick, [string]message )
- onDiscordCommand( [string]nick, [string]message )
Example#file: scripts/main.nut
//Part 1 - In Game Events
function onScriptLoad()
{
print("VCMP 0.4 Server (rel006) Loaded");
}
function onPlayerJoin(player)
{
//This will send message to discord - 'SendMessage'
SendMessage("```\\n"+player.Name+" has joined the server\\n```");
}
function onPlayerPart(player, reason)
{
SendMessage("```\\n"+player.Name+" has left the server ("+GetReason(reason)+")\\n```");
}
function onPlayerChat(player, text)
{
SendMessage(player.Name+": "+text);
return 1;
}
function onPlayerDeath(player,reason)
{
local reasontxt=GetDeathReason(player, reason);
SendMessage(format("```\\n%s\\n```",reasontxt));
}
function onPlayerKill( killer, player, reason, bodypart )
{
SendMessage( killer.Name + " killed " + player.Name + " `" + GetWeaponName( reason ) + "` " + GetBodyPart(bodypart) + "" );
}
function onPlayerTeamKill( killer, player, reason, bodypart )
{
SendMessage( killer.Name + " team killed " + player.Name + " `" + GetWeaponName( reason ) + "` " + GetBodyPart(bodypart) + "" );
}
function onPlayerSpawn( player )
{
SendMessage(player.Name+" has spawned.");
}
function onPlayerCrashDump( player, CrashReport )
{
SendMessage(player.Name+" crash dumped.");
}
//Part 2 - Discord Events
function onDiscordCommand(username, cmd, text ) //Called when using / or !. text="" if empty
{
switch(cmd)
{
case "echo":SendMessage(text);break;
case "hostname": SendMessage(GetServerName());break;
case "gamemode": SendMessage(GetGameModeName());break;
case "say": if(text!=""){
local msg=format("[#ffffff]%s (web): [#ffff00]%s", username, text);
ClientMessageToAll(msg,255,255,255);
print(format("\x1b[1K\r\x1b[1;33m%s (web): \x1b[37m%s\x1b[0m",username,text));
}else SendMessage("Usage: !say text");
break;
case "players": local plr, names="",count=0;
for(local i=0;i<GetMaxPlayers();i++)
{
plr=FindPlayer(i);
if(plr)
{
names+=format("%s[%d] %s",count?"\\n":"",i,plr.Name);
count++;
}
}
if(!count)
SendMessage("No players in server");
else
{
//See new line added
SendMessage(format("Total players: %d.\\n%s",count, names));
}
break;
case "gravity": SendMessage("```fix\\nGravity: "+GetGravity()+"\\n```");break;
case "time": SendMessage("The current game time is "+format("%02d:%02d",GetHour(),GetMinute()));break;
case "weather":
local weather = GetWeather();
switch (weather) {
case 0:
weather = "Mostly clear skies";
break;
case 1:
weather = "Overcast";
break;
case 2:
weather = "Rainy-lightning";
break;
case 3:
weather = "Foggy";
break;
case 4:
weather = "Clear skies";
break;
case 5:
weather = "Rainy";
break;
case 6:
weather = "Dark sky partly cloudy";
break;
case 7:
weather = "Light sky partly cloudy";
break;
case 8:
weather = "Overcast partly cloudy";
break;
case 9:
weather = "Grey sky black clouds";
break;
default:
weather = "Unknown";
break;
}
SendMessage("Current weather: " + weather);
break;
case "cmds":
case "help":
case "cmd":
SendMessage("Available cmds:\\n"+
"`echo say hostname gamemode players gravity time weather cmds`\\n"+
"Use / or ! as prefix.");break;
}
}
//Chat messages in channel
function onDiscordMessage(username, text)
{
print("\x1b[1K\r\x1b[1;33m"+username+":\x1b[1;37m "+text+"\x1b[0m");
}
//useful functions
//Credits: SLC https://forum.vc-mp.org/index.php?topic=400.msg2563
function GetBodyPart(bpid)
{
switch(bpid)
{
case BODYPART_BODY: return "Body";
case BODYPART_TORSO: return "Torso";
case BODYPART_LEFTARM: return "Left Arm";
case BODYPART_RIGHTARM: return "Right Arm";
case BODYPART_LEFTLEG: return "Left Leg";
case BODYPART_RIGHTLEG: return "Right Leg";
case BODYPART_HEAD: return "Head";
default: return "Unknown";
}
}
function GetReason(reason)
{
switch(reason)
{
case 1: return "quit";
case 2: return "kicked";
case 3: return "crashed";
case 4: return "anticheat";
case 0:
default: return "timeout";
}
}
function GetDeathReason(player,reason)
{
switch(reason)
{
case WEP_FALL: return player.Name+" fell to death.";
case WEP_DROWNED: return player.Name+" drowned.";
case WEP_VEHICLE: return player.Name+" died in car.";
case WEP_SUICIDE: return player.Name+" suicided.";
case 41: return player.Name+" exploded.";
default: return player.Name+" died.";
}
}
Screenshots(https://i.imgur.com/QWvegXr.png)
(https://i.imgur.com/GhXgo4R.png)
The result of !say command from discord:
!say can you see me? (https://i.imgur.com/Na5hODw.jpg)
The messages send in discord are received by vcmp server:
(https://i.imgur.com/Lm97emO.png)
Downloads
Click any of the below buttons to download:
(https://i.imgur.com/lW4dGHT.png) (https://sourceforge.net/projects/discordsync/files/discordsync_win.7z/download) (https://i.imgur.com/89t3Ux5.png) (https://sourceforge.net/projects/discordsync/files/discordsync-linux-64-v1.1.tar/download)(updated) (https://i.imgur.com/5VimQ56.png) (https://sourceforge.net/projects/discordsync/files/DiscordSync-lin86.tar/download) (https://dabuttonfactory.com/button.png?t=Windows+XP+&f=Open+Sans-Bold&ts=18&tc=fff&hp=30&vp=8&c=11&bgt=unicolored&bgc=15d798) (https://sourceforge.net/projects/discordsync/files/discordsync_winxp.zip/download)
The last item Windows XP build uses builtin-openssl(statically linked) instead of native schannel of windows.
License
This plugin is open-sourced. See LICENSE file in downloads.
Source code
The source-code can be downloaded:
(https://i.imgur.com/WXmUkq2.png) (https://sourceforge.net/projects/discordsync/files/discordsync-source.tar.gz/download)
(Size 6 MB approx, because of static libraries inside).
Squirrel Server | C++ Server |
(https://i.imgur.com/KK8VT2x.png) | (https://i.imgur.com/QaO6HgQ.png) |
The plugin does not depend on squirrel. A Cpp server(script coded in cplus plus and compiled to dll, which is put in 'plugins' directory) is using discord above More Info on C++ ServerIn order to show that this discord plugin can also be used in non-squirrel servers, i made an example of c++ server using it. In the screenshot you can see it as Loaded plugin:
hello32 apart from
discordsync04rel32.
It's source and compile instructions can be downloaded below:
(https://i.imgur.com/nv5VzKq.png) (https://sourceforge.net/projects/discordsync/files/vcmp-cpp-server.7z/download)
(https://i.imgur.com/lUZjMDw.png)
It shows !say command in game( the green one in above picture). It also send ingame /say command to discord (pink one).(https://i.imgur.com/vPtcjXg.png)
Plugin Commands (Reference)The plugin both give and respond to certain plugin commands:
Sl No | Name | Identifier | Identifier(In decimal) | Message | In/Out | Details |
1 | CMD_DISCONNECT | 0x3B456AB3 | 994405043 | | In | Disconnects the bot from discord gateway. |
2 | CMD_RECONNECT | 0x3B456AB4 | 994405044 | "" OR "RESUME" | In | Disconnects and reconnect. If message="RESUME", then it will Resume instead of restarting new session. |
3 | CMD_LOGMSGEX | 0x3B456AB5 | 994405045 | "" | In | Logs message into the server_log.txt without printing to screen. It uses VT sequences to disable console printing. |
4 | CMD_SHOWUPTIME | 0x3B456AB6 | 994405046 | "" | In | Prints how much time the bot's current session is up. |
5 | CMD_RESUME | 0x3B456AB7 | 994405047 | "" | In | If the bot is connected, it will disconnect and resume the session again. |
6 | CMD_STATUS | 0x3B456AB8 | 994405048 | "" | In | Prints to console "Connected" or "Not Connected" which is the status of bot |
7 | CMD_CHANNEL | 0x3B456AB9 | 994405049 | ChannelID | In | Change channel |
8 | CMD_TOKEN | 0x3B456ABA | 994405050 | token | In | Change bot token |
9 | CMD_ONMESSAGE | 0x3B456ABB | 994405051 | nick:cmd txt | Out | When users send messages starting with '/' or '!'. Not sent by default unless CMD_SUBSCRIBE is received. |
10 | CMD_SUBSCRIBE | 0x3B456ABC | 994405052 | "" | In | To activate CMD_ONMESSAGE and CMD_ONMESSAGE2. |
11 | CMD_UNSUBSCRIBE | 0x3B456ABD | 994405053 | "" | In | To deactivate effects of CMD_SUBSCRIBE |
12 | CMD_SENDMSG | 0x3B456ABE | 994405054 | msg | In | Sends a message to the channel as chat |
13 | CMD_ONCONNECT | 0x3B456ABF | 994405055 | "" | Out | Sends when connected and "READY" signal received from discord gateway |
14 | CMD_ON_DISCONNECT | 0x3B456AC0 | 994405056 | "" | Out | When connection is closed permanently |
15 | CMD_VERBOSE | 0x3B456AC1 | 994405057 | "" or "off" | In | To show some reconnection messages if any on screen. By default, they are hidden. |
16 | CMD_ONMESSAGE2 | 0x3B456AC2 | 994405058 | nick:txt | Out | When the user chats normally without '/' or '!' |
(https://i.imgur.com/2MaYKFe.png)
Interacting RCON tool (which has function to send plgncmd) with VCMP Server. You can download the tool and its plugin here (https://forum.vc-mp.org/index.php?topic=9199.0)
Wow bro Great plugin at VC:MP
Amazing and better
Not like others plugin for discord out date
Bro keep going your works done!!
Good luck!
Thank you for your kind words. I'm glad to see you're enjoying the plugin. Happy Gaming.
Hey there habi! great job out there!
Suggestion: You should try putting the source code and stuff on github aswell.
It is already there: GitHub (https://github.com/habi498/DiscordSync)
Anybody having discord connection problem check you have given Message Content Intent permission. This is shown on step 4 of first post of this topic(Creating a bot and getting token).
1.0 (a)
Fixed one bug of bot not connecting even if with proper token, channel and permissions.
Thanks to Xann
download links in first post updated
any idea why this happens?
(https://cdn.discordapp.com/attachments/662253048885936128/1172956233771261982/image.png?ex=6562339e&is=654fbe9e&hm=8084fb7cfb8268f79f0e7aa05e4d9211cb32621cdddc8f5a95dc1dcf081822c4&)
linux x64 plugin
No, it means discord has send a CLOSE event.
The server_log.txt must contain more information.
Please open server_log.txt and post the relevant messages.
In that file,
[DiscordSync] Resume URL:
[DiscordSync] Session id:
means it first connected and then disconnected.
Did you give MESSAGE CONTENT INTENT explained in step 4 of first post in this topic.?
Quote from: habi on Nov 12, 2023, 06:56 AM-
i forgot to mention windows plugin works fine with the same script.
for some reasons server_log.txt is not logging the console content, however i took a screenshot that might help,
(https://cdn.discordapp.com/attachments/801465673468739586/1173189193267171338/image.png?ex=65630c94&is=65509794&hm=811344dedc6ec5007afc776800b5127956ca4f7008f61c21631e74bea3ce6231&)
(https://cdn.discordapp.com/attachments/801465673468739586/1173188058879905792/image.png?ex=65630b86&is=65509686&hm=321a64ade9892764acb516da6bef07ca05497c63cb6cbc15bb6652b924e99af6&)
(these are emotes present in the discord server btw)
and yes i did the step 4 as mentioned and it works fine with windows server
Quote from: Roystang on Nov 12, 2023, 09:23 AM..
I understand the windows plugin works fine. I see you are also getting a 'Session ID'.
To debug the issue, i have finished a program to get more information about the bug.
Download this linux console program (it is discordsync scratch) and run it. console (https://www.mediafire.com/file/d35tqa3p3pga94l/console/file)
chmod 777 console
./console your_bot_token
what do you see. Can you see "My ID is 98776082681339..", "READY", "GUILD_CREATE" events? Do your console get terminated automatically? It should stay for success.
To compare with, windows version: console.exe (https://www.mediafire.com/file/zg1wdl72al52u3k/console.exe/file) (might need vcruntime140.dll, msvcp140.dll, vcruntime140_1.dll)
Quote from: Roystang on Nov 11, 2023, 06:10 PMany idea why this happens?
(https://cdn.discordapp.com/attachments/662253048885936128/1172956233771261982/image.png?ex=6562339e&is=654fbe9e&hm=8084fb7cfb8268f79f0e7aa05e4d9211cb32621cdddc8f5a95dc1dcf081822c4&)
linux x64 plugin
Got the same Error, Windows works fine but Linux not, I get also no Information in Server Log about the Plugin
Quote from: Pun1sh3r on Nov 16, 2023, 11:30 AMGot the same Error, Windows works fine but Linux not, I get also no Information in Server Log about the Plugin
Could you try this console program which connect to discord and post the results
download (https://www.mediafire.com/file/d35tqa3p3pga94l/console/file)
Quote from: habi on Nov 18, 2023, 03:29 AMQuote from: Pun1sh3r on Nov 16, 2023, 11:30 AMGot the same Error, Windows works fine but Linux not, I get also no Information in Server Log about the Plugin
Could you try this console program which connect to discord and post the results
download (https://www.mediafire.com/file/d35tqa3p3pga94l/console/file)
"t": "READY"
}
My ID is 47821648158326XXXX doesnt terminate and runs
Thanks for testing it out. Now, it will be easier for me to find out the bug. I will post the solution once it is found.
@Pun1sh3r, i made a debug version of plugin( discordsync04rel64so ). It will print all messages send and received. Could you try this and post me the results.
If there is secret token in output, you may remove cut/hide that part.
debug version - here (https://www.mediafire.com/file/yxlp2smxkmn8l07/discordsync04rel64.so/file)
(i was bit lazy last week, also my computer got some problems)
I get now this Error:
"Plugin error >> dlopen() 'plugins/discordsync04rel64.so' failed: /lib/x86_64-lin ux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by plugins/d iscordsync04rel64.so)"
Cant really test it now, did you changed something? Cause it was working with the old one
Thank you for testing it out.
GLIBCXX_3.4.29 is now fixed ( downgraded compiler, Virtual Machine from Ubuntu 22 to 18.04 and recompiled ).
Here is the new file:
discordsync04rel64so (https://www.mediafire.com/file/q19l5hc5gmtuknw/discordsync04rel64.so/file)
Please do test and tell me if it is fixed.
Quote from: habi on Dec 07, 2023, 01:14 PMThank you for testing it out.
GLIBCXX_3.4.29 is now fixed ( downgraded compiler, Virtual Machine from Ubuntu 22 to 18.04 and recompiled ).
Here is the new file:
discordsync04rel64so (https://www.mediafire.com/file/q19l5hc5gmtuknw/discordsync04rel64.so/file)
Please do test and tell me if it is fixed.
[MODULE] Loaded DiscordSync v1.0 [a] by habi
6:22:44 {"t":null,"s":null,"op":10,"d":{"heartbeat_interval":41250,"_trace":["[\"gateway-prd-us-east1-b-cjn8\",{\"micros\":0.0}]"]}}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 { "op":2, "d": { "token":"MTE3NTE3MTczNDgxNTY1ODEwNw.Ga_j37.SdJOINQcHOJ12MLWA0qQsHNjkswHP87if_pBTg", "intents":37377, "properties": { "os": "linux", "browser": "my_library", "device": "my_library" } } }
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":null}
6:22:44 {"t":"READY","s":1,"op":0,"d":{"v":10,"user_settings":{},"user":{"verified":true,"username":"VCDM 1.0","mfa_enabled":true,"id":"1175171734815658107","global_name":null,"flags":0,"email":null,"discriminator":"0136","bot":true,"avatar":null},"session_type":"normal","session_id":"d3c0b089ee5dc5ece07684a0cbdbada0","resume_gateway_url":"wss://gateway-us-east1-b.discord.gg","relationships":[],"private_channels":[],"presences":[],"guilds":[{"unavailable":true,"id":"767652109817479189"}],"guild_join_reques
6:22:44 [DiscordSync]: Connected to Discord
6:22:44 [DiscordSync] Resume URL: wss://gateway-us-east1-b.discord.gg/?v=10&encoding=json
6:22:44 [DiscordSync] Session id: d3c0b089ee5dc5ece07684a0cbdbada0
6:22:44 {"op":1, "d":1}
6:22:44 {"t":"GUILD_CREATE","s":2,"op":0,"d":{"default_message_notifications":0,"splash":null,"unavailable":false,"afk_channel_id":null,"large":false,"application_id":null,"banner":null,"afk_timeout":300,"latest_onboarding_question_id":null,"region":"deprecated","id":"767652109817479189","discovery_splash":null,"application_command_counts":{"3":2,"2":1,"1":203},"name":"Vice City Deathmatch","nsfw_level":0,"embedded_activities":[],"max_members":500000,"owner_id":"494913733114462228","emojis":[{"version":0,"
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:44 {"t":null,"s":null,"op":11,"d":null}
6:22:44 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 {"t":null,"s":null,"op":11,"d":null}
6:22:45 {"op":1, "d":2}
6:22:45 meta->flags: 8
[MODULE] Gateway connection closed. Disconnected.
6:22:45 [DiscordSync] Gateway connection closed.
6:22:45 DiscordSync_CloseConnection was called
Ah, i see the problem. It is sending same message too many times.
Let me reach home and i will fix it.
Thanks for testing, Roystang.
Can anyone confirm this solves the problem.
discordsync04rel64so (http://www.mediafire.com/file/2uyfjvk6ym81qy5/discordsync04rel64.so) v1.1
Quote from: habi on Dec 09, 2023, 09:25 AMCan anyone confirm this solves the problem.
discordsync04rel64so (http://www.mediafire.com/file/2uyfjvk6ym81qy5/discordsync04rel64.so) v1.1
It works fine now, thank you.
Great. Thank you for verifying.
The main download links updated.
Thanks, works fine now!
Man so thank you but i need add messages in more than x1 channel how ? and i need know if player role ID ?
thanks habi. its very easy to configure, everything is guided step by step. awesome!
Quote from: vitovc on Nov 05, 2024, 01:25 PMthanks habi. its very easy to configure, everything is guided step by step. awesome!
You are welcome vito.