Discord 消息提醒机器人

Discord 消息提醒机器人

之前一直在用Discord的GinaBot消息提醒机器人,但是可惜分家后,GinaBot跑去HIVE链上去了

后来STEEM这边的开发者也开发了2款Discord消息提醒机器人,他们分别是MimeeBot 和RUPA机器人

这两款我都试过,体验都挺一般的。两款都不能设置接受哪种消息提醒,所以都是一窝蜂的把所有记录推送给你。如果你的帖子被几百个账号点赞,那消息提醒可把手机折腾要死。没用的提醒一大堆,有用的提醒又掩盖在一堆没用的消息提醒里面。

而我只想要回复,转账,关注,踩,mention这类的消息,所以就打算自己写个Discord 消息提醒机器人

Discord机器人比我想象的简单,尤其使用了一个叫eris的库,省下了很多时间来美化消息提醒

完成后的效果:

image.png

机器人代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
const Eris = require("eris");
const steem = require('steem');
const bot = new Eris("TOKEN");
const channelId = 'CHANNEL ID';
const account = 'STEEM ID';

function start() {
steem.api.streamTransactions("head", function (err, result) {
if (!err) {
if (result) {
let op = result.operations[0];
const time = new Date();
const type = op[0];
const params = op[1];
switch (type) {
case 'comment': {
const isRootPost = !params.parent_author;
//Find reply
if (!isRootPost && params.parent_author === account) {
let content = `@${params.parent_author}:\n@${params.author} has commented on your post`;
let title = `${params.permlink}`;
let comment = params.body.substring(0, 100);
let url = `https://steem.buzz/@${params.author}/${params.permlink}`;
createMessge(content, title, comment, url, time);
}

//Find Mention
if (params.body.includes(`@${account}`)) {
let content = '';
let title = '';
let comment = '';
let url = '';
if (isRootPost) {
content = `@${account}:\n"@${account}" was mentioned by @${params.author} in a post`;
title = `${params.title}`;
comment = params.body.substring(0, 100);
} else {
content = `@${account}:\n"@${account}" was mentioned by @${params.author} in a comment`;
title = `${params.permlink}`;
comment = params.body.substring(0, 100);
}
url = `https://steem.buzz/@${params.author}/${params.permlink}`;
createMessge(content, title, comment, url, time);
}
break;
}

case 'custom_json': {
let json = {};
try {
json = JSON.parse(params.json);

} catch (err) {
console.log('Wrong json format on custom_json', err);
}
switch (params.id) {
case 'follow': {
/** Find follow */
if (json[0] === 'follow' && json[1].following === account) {
let content = `@${json[1].follower} now follows you`;
let title = '';
let comment = '';
let url = '';
createMessge(content, title, comment, url, time);
}
}
}
break;
}

case 'transfer': {
if (params.to === account) {
let content = `@${params.from} transferred ${params.amount} to you`;
let title = '';
let comment = params.memo;
let url = '';
createMessge(content, title, comment, url, time);
}
break;
}
case 'vote': {
//Find downvote
if (params.weight < 0 && params.author === account) {
let content = `@${params.voter} downvoted your post`;
let title = params.permlink;
let comment = '';
let url = `https://steem.buzz/@${params.author}/${params.permlink}`;
createMessge(content, title, comment, url, time);
}
}
}
}
} else {
sleep(2000).then(() => {
console.error(err);
start();
});
}
});
}




const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));


bot.once("ready", () => { // When the bot is ready
console.log("Ready!"); // Log "Ready!"
console.log(new Date());
start();

});



function createMessge(content, title, comment, url, time) {
bot.createMessage(channelId, {
content: content,
embed: {
title: title,
color: 0x008000,
url: url,
description: comment,
footer: {
text: `Time:${time}`
}
}
})
}

bot.connect(); // Get the bot to connect to Discord

并不是很完善的代码,但是基本消息提醒都有了。


This page is synchronized from the post: ‘Discord 消息提醒机器人’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×