Skip to content

Instantly share code, notes, and snippets.

@akaiomoi
Last active December 10, 2023 04:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save akaiomoi/4a7def344138a1e014d504bd6123b87d to your computer and use it in GitHub Desktop.
Save akaiomoi/4a7def344138a1e014d504bd6123b87d to your computer and use it in GitHub Desktop.
Really cursed discord bot via jsmacros
const token = '<token>';
const channelId = '<channelId>';
var delay = 0;
var lastHeartbeat = 0;
var stuff = false;
var wtf = 1;
const listener = JsMacros.on('Tick', JavaWrapper.methodToJava(() => {
if (stuff) {
if (Date.now() - lastHeartbeat > delay) {
sendHeartbeat();
lastHeartbeat = Date.now();
}
}
}))
const websocket = Request.createWS('wss://gateway.discord.gg/?v=9&encoding=json');
websocket.onConnect = JavaWrapper.methodToJava((ws, data) => {
Chat.log('Connected to Discord Gateway');
authenticate(ws);
});
websocket.onTextMessage = JavaWrapper.methodToJava((ws, data) => {
const message = JSON.parse(data);
switch (message.op) {
case 10:
//sendHeartbeat();
startHeartbeat(message);
break;
case 0:
handleMessage(message);
break;
}
});
websocket.onError = JavaWrapper.methodToJava((ws, data) => {
Chat.log(`damn, error ${data.getError()}`);
});
function authenticate(ws) {
const payload = {
op: 2,
d: {
token: token,
intents: 47047,
properties: {
os: 'linux',
browser: 'custom',
device: 'custom',
},
},
};
ws.sendText(JSON.stringify(payload));
}
function sendHeartbeat() {
const payload = {
op: 1,
d: wtf
};
wtf += 1;
websocket.sendText(JSON.stringify(payload));
}
function startHeartbeat(message) {
delay = message.d.heartbeat_interval - 200;
stuff = true;
}
function handleMessage(message) {
if (message.t === 'MESSAGE_CREATE') {
const channelRespID = message.d.channel_id;
const content = message.d.content;
if (channelRespID === channelId) {
Chat.log(`Message in the specified channel: ${content}`);
}
}
}
websocket.getWs().connect()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment