Libraryless. Click here for Pure Java version (15407L/108K).
1 | !7 |
2 | |
3 | concept User {
|
4 | S channelID, name; |
5 | long greeted; |
6 | } |
7 | |
8 | concept LastMsgSeen {
|
9 | S publishedAt; |
10 | } |
11 | |
12 | module GreetNewVisitors > DynPrintLog {
|
13 | bool enabled, talk; |
14 | |
15 | visualize {
|
16 | ret centerAndSouthWithMargins(super.visualize(), |
17 | jrightalignedline(dm_fieldCheckBox('enabled), dm_fieldCheckBox('talk)));
|
18 | } |
19 | |
20 | start {
|
21 | db(); |
22 | dm_vmBus_onMessage_q('gotYouTubeLiveStreamMessage, voidfunc(O msg) {
|
23 | if (!enabled) ret; |
24 | S publishedAt = getString(msg, 'publishedAt); |
25 | if (cmp(publishedAt, ymdWithMinuses(now()-hoursToMS(2))) < 0) ret; // general ignore-old-messages safety thing (rough) |
26 | S channelID = getString(msg, 'authorChannelId); |
27 | S name = getString(msg, 'authorDisplayName); |
28 | if (empty(channelID)) ret; |
29 | print("Got recent message from " + name + " (" + channelID + ")");
|
30 | User user = uniq_sync(User, +channelID); |
31 | cset(user, +name); |
32 | if (user.greeted == 0) {
|
33 | cset(user, greeted := now()); |
34 | S text = "Hello " + name; |
35 | if (talk) dm_say(text); else print(text); |
36 | } |
37 | |
38 | LastMsgSeen lastSeen = uniq_sync(LastMsgSeen); |
39 | if (cmp(publishedAt, lastSeen.publishedAt) <= 0) ret; |
40 | cset(lastSeen, +publishedAt); |
41 | |
42 | S s = getString(msg, 'text); |
43 | new Matches m; |
44 | if (swic(s, "!say ", m) && talk) |
45 | dm_say(emptyIfLongerThan(80, m.rest())); |
46 | }); |
47 | } |
48 | } |
download show line numbers debug dex old transpilations
Travelled to 8 computer(s): bhatertpkbcr, cfunsshuasjs, gwrvuhgaqvyk, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1020368 |
| Snippet name: | Greet New Live Stream Visitors & execute !say commands [dev.] |
| Eternal ID of this version: | #1020368/9 |
| Text MD5: | f4e67506fe6f1b4d55c672f5ba517992 |
| Transpilation MD5: | 295a50971122b23fad699a9e6b5b6720 |
| Author: | stefan |
| Category: | javax |
| Type: | JavaX source code (Dynamic Module) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2018-12-16 19:12:21 |
| Source code size: | 1425 bytes / 48 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 599 / 856 |
| Version history: | 8 change(s) |
| Referenced in: | [show references] |