rich presence for the hell of it
This commit is contained in:
parent
5cf3ef01ef
commit
1eeaec78e3
8 changed files with 150 additions and 1 deletions
|
@ -8,6 +8,7 @@
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chalk": "4.1.2",
|
"chalk": "4.1.2",
|
||||||
|
"discord-rpc": "^4.0.1",
|
||||||
"eris": "github:abalabahaha/eris#dev"
|
"eris": "github:abalabahaha/eris#dev"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,12 @@ lockfileVersion: 5.4
|
||||||
|
|
||||||
specifiers:
|
specifiers:
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
|
discord-rpc: ^4.0.1
|
||||||
eris: github:abalabahaha/eris#dev
|
eris: github:abalabahaha/eris#dev
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
|
discord-rpc: 4.0.1
|
||||||
eris: github.com/abalabahaha/eris/eb403730855714eafa36c541dbe2cb84c9979158
|
eris: github.com/abalabahaha/eris/eb403730855714eafa36c541dbe2cb84c9979158
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
@ -17,6 +19,13 @@ packages:
|
||||||
color-convert: 2.0.1
|
color-convert: 2.0.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/bindings/1.5.0:
|
||||||
|
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
|
||||||
|
dependencies:
|
||||||
|
file-uri-to-path: 1.0.0
|
||||||
|
dev: false
|
||||||
|
optional: true
|
||||||
|
|
||||||
/chalk/4.1.2:
|
/chalk/4.1.2:
|
||||||
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
|
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
@ -36,11 +45,46 @@ packages:
|
||||||
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/discord-rpc/4.0.1:
|
||||||
|
resolution: {integrity: sha512-HOvHpbq5STRZJjQIBzwoKnQ0jHplbEWFWlPDwXXKm/bILh4nzjcg7mNqll0UY7RsjFoaXA7e/oYb/4lvpda2zA==}
|
||||||
|
dependencies:
|
||||||
|
node-fetch: 2.6.7
|
||||||
|
ws: 7.5.9
|
||||||
|
optionalDependencies:
|
||||||
|
register-scheme: github.com/devsnek/node-register-scheme/e7cc9a63a1f512565da44cb57316d9fb10750e17
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- bufferutil
|
||||||
|
- encoding
|
||||||
|
- utf-8-validate
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/file-uri-to-path/1.0.0:
|
||||||
|
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
|
||||||
|
dev: false
|
||||||
|
optional: true
|
||||||
|
|
||||||
/has-flag/4.0.0:
|
/has-flag/4.0.0:
|
||||||
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
|
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/node-addon-api/1.7.2:
|
||||||
|
resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==}
|
||||||
|
dev: false
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
/node-fetch/2.6.7:
|
||||||
|
resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
|
||||||
|
engines: {node: 4.x || >=6.0.0}
|
||||||
|
peerDependencies:
|
||||||
|
encoding: ^0.1.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
encoding:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
whatwg-url: 5.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/opusscript/0.0.8:
|
/opusscript/0.0.8:
|
||||||
resolution: {integrity: sha512-VSTi1aWFuCkRCVq+tx/BQ5q9fMnQ9pVZ3JU4UHKqTkf0ED3fKEPdr+gKAAl3IA2hj9rrP6iyq3hlcJq3HELtNQ==}
|
resolution: {integrity: sha512-VSTi1aWFuCkRCVq+tx/BQ5q9fMnQ9pVZ3JU4UHKqTkf0ED3fKEPdr+gKAAl3IA2hj9rrP6iyq3hlcJq3HELtNQ==}
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
|
@ -54,12 +98,40 @@ packages:
|
||||||
has-flag: 4.0.0
|
has-flag: 4.0.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/tr46/0.0.3:
|
||||||
|
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/tweetnacl/1.0.3:
|
/tweetnacl/1.0.3:
|
||||||
resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==}
|
resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==}
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/webidl-conversions/3.0.1:
|
||||||
|
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/whatwg-url/5.0.0:
|
||||||
|
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
|
||||||
|
dependencies:
|
||||||
|
tr46: 0.0.3
|
||||||
|
webidl-conversions: 3.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/ws/7.5.9:
|
||||||
|
resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==}
|
||||||
|
engines: {node: '>=8.3.0'}
|
||||||
|
peerDependencies:
|
||||||
|
bufferutil: ^4.0.1
|
||||||
|
utf-8-validate: ^5.0.2
|
||||||
|
peerDependenciesMeta:
|
||||||
|
bufferutil:
|
||||||
|
optional: true
|
||||||
|
utf-8-validate:
|
||||||
|
optional: true
|
||||||
|
dev: false
|
||||||
|
|
||||||
/ws/8.8.1:
|
/ws/8.8.1:
|
||||||
resolution: {integrity: sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==}
|
resolution: {integrity: sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==}
|
||||||
engines: {node: '>=10.0.0'}
|
engines: {node: '>=10.0.0'}
|
||||||
|
@ -87,3 +159,14 @@ packages:
|
||||||
- bufferutil
|
- bufferutil
|
||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
github.com/devsnek/node-register-scheme/e7cc9a63a1f512565da44cb57316d9fb10750e17:
|
||||||
|
resolution: {tarball: https://codeload.github.com/devsnek/node-register-scheme/tar.gz/e7cc9a63a1f512565da44cb57316d9fb10750e17}
|
||||||
|
name: register-scheme
|
||||||
|
version: 0.0.2
|
||||||
|
requiresBuild: true
|
||||||
|
dependencies:
|
||||||
|
bindings: 1.5.0
|
||||||
|
node-addon-api: 1.7.2
|
||||||
|
dev: false
|
||||||
|
optional: true
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
const {addCommand} = require("../lib/command");
|
const {addCommand} = require("../lib/command");
|
||||||
|
const {updatePresence} = require("../lib/presence");
|
||||||
|
|
||||||
addCommand("A", "toggles AFK mode", function () {
|
addCommand("A", "toggles AFK mode", function () {
|
||||||
if (comcord.state.afk == true) {
|
if (comcord.state.afk == true) {
|
||||||
|
@ -12,4 +13,6 @@ addCommand("A", "toggles AFK mode", function () {
|
||||||
comcord.client.editAFK(true);
|
comcord.client.editAFK(true);
|
||||||
console.log("<you go AFK>");
|
console.log("<you go AFK>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updatePresence();
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
const chalk = require("chalk");
|
const chalk = require("chalk");
|
||||||
|
|
||||||
const {startPrompt} = require("../lib/prompt");
|
const {startPrompt} = require("../lib/prompt");
|
||||||
|
const {updatePresence} = require("../lib/presence");
|
||||||
|
|
||||||
function sendMode() {
|
function sendMode() {
|
||||||
if (!comcord.state.currentChannel) {
|
if (!comcord.state.currentChannel) {
|
||||||
|
@ -30,6 +31,8 @@ function sendMode() {
|
||||||
comcord.client.editStatus("online");
|
comcord.client.editStatus("online");
|
||||||
comcord.client.editAFK(false);
|
comcord.client.editAFK(false);
|
||||||
console.log("<you have returned>");
|
console.log("<you have returned>");
|
||||||
|
|
||||||
|
updatePresence();
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log("<failed to send message: " + err.message + ">");
|
console.log("<failed to send message: " + err.message + ">");
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
const {addCommand} = require("../lib/command");
|
const {addCommand} = require("../lib/command");
|
||||||
const {startPrompt} = require("../lib/prompt");
|
const {startPrompt} = require("../lib/prompt");
|
||||||
|
const {updatePresence} = require("../lib/presence");
|
||||||
|
|
||||||
const {listUsers} = require("./listUsers");
|
const {listUsers} = require("./listUsers");
|
||||||
|
|
||||||
|
@ -32,6 +33,8 @@ function switchChannel(input) {
|
||||||
const channel = guild.channels.get(comcord.state.currentChannel);
|
const channel = guild.channels.get(comcord.state.currentChannel);
|
||||||
|
|
||||||
process.title = `${guild.name} - ${channel.name} - comcord`;
|
process.title = `${guild.name} - ${channel.name} - comcord`;
|
||||||
|
|
||||||
|
updatePresence();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
const {addCommand} = require("../lib/command");
|
const {addCommand} = require("../lib/command");
|
||||||
const {startPrompt} = require("../lib/prompt");
|
const {startPrompt} = require("../lib/prompt");
|
||||||
|
const {updatePresence} = require("../lib/presence");
|
||||||
|
|
||||||
const {listChannels} = require("./listChannels");
|
const {listChannels} = require("./listChannels");
|
||||||
const {listUsers} = require("./listUsers");
|
const {listUsers} = require("./listUsers");
|
||||||
|
@ -47,6 +48,8 @@ function switchGuild(input) {
|
||||||
const channel = guild.channels.get(comcord.state.currentChannel);
|
const channel = guild.channels.get(comcord.state.currentChannel);
|
||||||
|
|
||||||
process.title = `${guild.name} - ${channel.name} - comcord`;
|
process.title = `${guild.name} - ${channel.name} - comcord`;
|
||||||
|
|
||||||
|
updatePresence();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
19
src/index.js
19
src/index.js
|
@ -1,5 +1,8 @@
|
||||||
const Eris = require("eris");
|
const Eris = require("eris");
|
||||||
const chalk = require("chalk");
|
const chalk = require("chalk");
|
||||||
|
const DiscordRPC = require("discord-rpc");
|
||||||
|
|
||||||
|
const CLIENT_ID = "1026163285877325874";
|
||||||
|
|
||||||
const token = process.argv[2];
|
const token = process.argv[2];
|
||||||
|
|
||||||
|
@ -24,9 +27,12 @@ const client = new Eris("Bot " + token, {
|
||||||
intents: Eris.Constants.Intents.all,
|
intents: Eris.Constants.Intents.all,
|
||||||
});
|
});
|
||||||
comcord.client = client;
|
comcord.client = client;
|
||||||
|
const rpc = new DiscordRPC.Client({transport: "ipc"});
|
||||||
|
comcord.rpc = rpc;
|
||||||
|
|
||||||
const {finalizePrompt} = require("./lib/prompt");
|
const {finalizePrompt} = require("./lib/prompt");
|
||||||
const {processMessage, processQueue} = require("./lib/messages");
|
const {processMessage, processQueue} = require("./lib/messages");
|
||||||
|
const {updatePresence} = require("./lib/presence");
|
||||||
|
|
||||||
require("./commands/quit");
|
require("./commands/quit");
|
||||||
require("./commands/clear");
|
require("./commands/clear");
|
||||||
|
@ -56,16 +62,27 @@ client.once("ready", function () {
|
||||||
|
|
||||||
client.editStatus("online", [
|
client.editStatus("online", [
|
||||||
{
|
{
|
||||||
application_id: "1026163285877325874",
|
application_id: CLIENT_ID,
|
||||||
name: "comcord",
|
name: "comcord",
|
||||||
timestamps: {
|
timestamps: {
|
||||||
start: comcord.state.startTime,
|
start: comcord.state.startTime,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
rpc
|
||||||
|
.login({
|
||||||
|
clientId: CLIENT_ID,
|
||||||
|
})
|
||||||
|
.catch(function () {});
|
||||||
});
|
});
|
||||||
client.on("error", function () {});
|
client.on("error", function () {});
|
||||||
|
|
||||||
|
rpc.on("ready", function () {
|
||||||
|
updatePresence();
|
||||||
|
});
|
||||||
|
rpc.on("error", function () {});
|
||||||
|
|
||||||
client.on("messageCreate", function (msg) {
|
client.on("messageCreate", function (msg) {
|
||||||
if (msg.author.id === client.user.id) return;
|
if (msg.author.id === client.user.id) return;
|
||||||
|
|
||||||
|
|
36
src/lib/presence.js
Normal file
36
src/lib/presence.js
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
function updatePresence() {
|
||||||
|
let guild, channel;
|
||||||
|
if (comcord.state.currentGuild != null) {
|
||||||
|
guild = comcord.client.guilds.get(comcord.state.currentGuild);
|
||||||
|
}
|
||||||
|
if (comcord.state.currentChannel != null && guild != null) {
|
||||||
|
channel = guild.channels.get(comcord.state.currentChannel);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const activity = {
|
||||||
|
startTimestamp: comcord.state.startTime,
|
||||||
|
smallImageKey: `https://cdn.discordapp.com/avatars/${comcord.client.user.id}/${comcord.client.user.avatar}.png?size=1024`,
|
||||||
|
smallImageText: `${comcord.client.user.username}#${comcord.client.user.discriminator}`,
|
||||||
|
buttons: [
|
||||||
|
{label: "comcord Repo", url: "https://github.com/Cynosphere/comcord"},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
if (guild != null) {
|
||||||
|
activity.largeImageKey = `https://cdn.discordapp.com/icons/${guild.id}/${guild.icon}.png?size=1024`;
|
||||||
|
activity.largeImageText = guild.name;
|
||||||
|
if (channel != null) {
|
||||||
|
activity.details = `#${channel.name} - ${guild.name}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (comcord.state.afk == true) {
|
||||||
|
activity.state = "AFK";
|
||||||
|
}
|
||||||
|
comcord.rpc.setActivity(activity);
|
||||||
|
} catch (err) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {updatePresence};
|
Loading…
Reference in a new issue