Compare commits
No commits in common. "e2ece557c2a20b4883640606994a74481c23e3e3" and "d51bd3014e9eb967cddaaa1a6eff6e373302bacb" have entirely different histories.
e2ece557c2
...
d51bd3014e
|
@ -45,14 +45,6 @@ Then run `npm install .` to install npm modules `axios` and `ws`.
|
|||
|
||||
Start the bot with the traditional `node index.js`.
|
||||
|
||||
However, you probably want this to run automatically on a web server. You can do this with `systemd` using the example unit file: `mastodon-clippy.service.example`. Adjust this for your user and paths, and then activate it:
|
||||
|
||||
```bash
|
||||
sudo cp mastodon-clippy.service.example /etc/systemd/system/mastodon-clippy.service
|
||||
sudo systemctl enable mastodon-clippy.service
|
||||
sudo systemctl start mastodon-clippy service
|
||||
```
|
||||
|
||||
## interacting with the bot
|
||||
|
||||
To "sign up" for notification from your bot, users have two options:
|
||||
|
|
42
index.js
42
index.js
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
|
||||
Clippy bot for mastodon.
|
||||
|
||||
|
@ -53,33 +53,25 @@ function initiateSettings(socket) {
|
|||
// return random suggestion string
|
||||
function suggestion(username) {
|
||||
|
||||
const n = crypto.randomInt(12)
|
||||
const n = crypto.randomInt(8)
|
||||
|
||||
switch(n) {
|
||||
case 0:
|
||||
return 'How about logging off instead?';
|
||||
case 1:
|
||||
return `Would you like to delete your toot, @${username}?`;
|
||||
return `Would you like to delete your toot, ${username}?`;
|
||||
case 2:
|
||||
return 'Can I help you take a walk outside? 🚶➡️';
|
||||
return 'Can I help you take a walk outside?';
|
||||
case 3:
|
||||
return 'You may like to reconsider your life choices.';
|
||||
case 4:
|
||||
return 'Why not try looking at #CatsOfMastodon instead?';
|
||||
case 5:
|
||||
return `Come on @${username}, we've talked about this. 🤷♂️`;
|
||||
return `Come on ${username}, we've talked about this.`;
|
||||
case 6:
|
||||
return `You should go look at some trees. Trees are calming 🌳`;
|
||||
return `You should go look at some trees. Trees are calming`;
|
||||
case 7:
|
||||
return `I'm not angry. I'm just very disappointed. 😔`;
|
||||
case 8:
|
||||
return `You said you were going to stop doing that ...and yet here we are.`;
|
||||
case 9:
|
||||
return `Time to touch some grass 🌱`;
|
||||
case 10:
|
||||
return `Why not have a nice cup of tea instead? 🫖`;
|
||||
case 11:
|
||||
return `And yet you still haven't read all of those books in your TBR pile. 🤔`;
|
||||
return `I'm not angry. I'm just very disappointed.`;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -141,42 +133,42 @@ function listen() {
|
|||
|
||||
// make sure bot is set up correctly each time it starts
|
||||
initiateSettings(ws)
|
||||
|
||||
|
||||
// errors
|
||||
ws.on('error', err => {
|
||||
console.error(`WebSocket error: ${err.message}`)
|
||||
resetConnection(ws)
|
||||
})
|
||||
|
||||
|
||||
// check updates and notifications in the stream
|
||||
ws.on('message', msg => {
|
||||
let packet = JSON.parse(msg)
|
||||
let data = JSON.parse(packet.payload)
|
||||
|
||||
|
||||
// notifications
|
||||
if (packet.event == 'notification') {
|
||||
|
||||
|
||||
// always follow back
|
||||
if (data.type == 'follow') {
|
||||
followAction(data.account.id, 'follow')
|
||||
}
|
||||
|
||||
|
||||
if (data.type == 'mention') {
|
||||
|
||||
|
||||
let post = data.status.content
|
||||
|
||||
|
||||
// check start requests
|
||||
if (post.match(/\bSTART\b/)) {
|
||||
followAction(data.account.id, 'follow')
|
||||
}
|
||||
|
||||
|
||||
// check stop requests
|
||||
if (post.match(/\STOP\b/)) {
|
||||
followAction(data.account.id, 'unfollow')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// updates (posts)
|
||||
if (packet.event == 'update') {
|
||||
let rid = data.id
|
||||
|
@ -193,7 +185,7 @@ function listen() {
|
|||
}
|
||||
else if (data.spoiler_text.toLowerCase().includes(topic)) {
|
||||
sendResponse(rid, user, username)
|
||||
}
|
||||
}
|
||||
else if (data.tags.map(tag => tag.name.toLowerCase()).includes(topic)) {
|
||||
sendResponse(rid, user, username)
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
"name": "mastodon-clippy",
|
||||
"version": "1.1.2",
|
||||
"version": "1.1.1",
|
||||
"description": "Mastodon clippy bot",
|
||||
"repository": "https://git.suboptimal.solutions/hugh/mastodon-clippy",
|
||||
"repository": "https://github.com/hughrun/mastodon-clippy.git",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
|
@ -10,7 +10,7 @@
|
|||
"author": "Hugh Rundle <hugh@hughrundle.net> (https://www.hughrundle.net)",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"axios": "^1.7.3",
|
||||
"ws": "^8.18"
|
||||
"axios": "^0.21.2",
|
||||
"ws": "^7.5.2"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue