forked from Magentah/chewie-bot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.todo
98 lines (87 loc) · 7.22 KB
/
.todo
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
System:
✘ Separate login from bot twitch connection. Login is for the site, bot connection is entirely through the config and doesn't need a login. @created(19-08-09 16:30) @cancelled(20-09-22 12:36)
Changed my thoughts about this. No authentication will be done through config. Everything will be done programmatically for authentication.
☐ Add system to add second account as bot account for a user. @created(20-09-22 12:34)
This would be linking a bot account to a users account. Would go through the same authentication, but would probably have to do it in a browser without any cookies,
otherwise twitch will just send back authentication for the current user..
Integrations:
☐ Streamlabs for donation alerts @created(20-09-23 11:31)
Song Queue and Service:
☐ Request a song through twitch chat with a URL
✔ Youtube URLs @done(19-08-09 16:22)
☐ Investigate using search apis @created(19-08-09 16:24)
It's possible to search youtube through apis, so think about adding functionality to add a youtube request by only
giving a title, for example.
☐ Soundcloud URLs
☐ Spotify URLs
This might not actually be possible, need to look in to whether Spotify will allow embedded playing of music
(https://developer.spotify.com/documentation/web-playback-sdk/)
✔ Songs get added to a request queue @done(19-08-09 16:22)
☐ Request queue has details on each song requested
☐ Add request type, request time, donation amount if donation @created(19-08-09 16:22)
Who requested, how it was requested, donated amount if donation, how long ago it was requested, whether it's been played or not, etc
☐ Toggle whether a song has been played or not
☐ Change sort order of songs
☐ Add to and remove from the queue manually
☐ Display song queue to users on the front end
This should be read-only for everyone except broadcaster and moderators.
Commands:
✔ Automatically detect commands without having to manually add every time @done(19-08-05 16:31)
Don't want to have to add a command every time a new one is created like how DI works,
Will probably end up watching and parsing a folder for commands based on file names.
✔ Flexible command system @done(19-08-05 16:31)
Ideally the system that handles executing whatever command needed doesn't need to know what the
command actually is or what it does. Everyone command can have an execute() function that the system
will call. The system can store each command in a map, providing an easy way to access each command.
✔ Make necessary services available to commands @done(19-08-05 16:31)
This probably needs to be through a service locator or something. Ideally there should only be a few
services that commands have direct access to (e.g. using a SongService instead of directly using url specific services)
✔ Able to add text commands through chat. @done(19-08-08 01:30)
✔ Restrict commands based on user levels. @done(19-08-10 16:12)
✔ Investigate a better way to handle command arguments, parsing them, etc @done(19-08-08 02:01)
Will need to change to single args with spaces being wrapped in quotes.
✔ Add an "internal" property for commands (e.g. TextCommand) that are only to be used by the bot. @done(19-08-09 15:07)
Would prevent users from using these commands at all, but keeps things separated a bit in terms of structure.
Means that the CommandService never has to know how to do anything except call a commands execute function.
Still not entirely sure about this at the moment, but it seems like the simplest option at the moment.
Events:
☐ Add event system, needs to handle bankheists, raffles, RPS, etc.
☐ Timer system - able to set a time for an event to allow registrations, then getting the results at the end of the timer.
☐ Registration - allow users to register for an active event. There may be several different active events at a time.
☐ Win conditions - Able to set win conditions / rewards for each event type
☐ Raffles
☐ Allow setup of a raffle with timer to automatically close the raffle to new entrants.
☐ After closing, mod / broadcaster can get a winner. Options to have winners only win once or not.
☐ Option to have winners be unable to enter another raffle for x time.
☐ Option to have winners given access to other commands for limited time (e.g. until next raffle, command is used successfully, etc)
Authentication:
☐ Refactor user login with Twitch.tv OAuth so that it actually works for multiple users. Currently only really works for a single user locally.
☐ Database refactoring to store user data. Don't want to pull from Twitch.tv API every time. Will need to refresh Twitch.tv data on some set interval.
✔ Update authentication so that it's correctly using nonces, refresh tokens, etc. @done(19-08-04 15:51)
✔ Twitch Login system. @created(20-09-22 12:33) @done(20-09-22 12:34)
✔ Session handling with Redis @created(20-09-22 12:34) @done(20-09-22 12:34)
Logging:
✔ Change the logger to something else that's got a bit more functionality (probably Winston). @done(19-08-06 01:44)
✔ Add log filtering based on content types (commands, twitch, database, etc). @done(19-08-06 01:44)
✔ Add config value to change log levels. @done(19-08-06 01:44)
✔ Update logger to allow passing Error objects @done(19-08-06 02:05)
✘ Investigate automatically setting logtype and if it's possible or not. @cancelled(19-08-07 08:07)
Something like setting a logtype for the current class in constructor/decorator that is stored in logger maybe
Not worth the effort to set logtype automatically based on calling class for now, easy enough to just pass the type.
Database:
✔ Update database service to use an ORM instead of using raw SQL queries for everything. @started(19-08-07 17:45) @done(19-08-08 01:30) @lasted(7h45m43s)
✔ Add repos for tables, add functions to interact with tables. @started(19-08-07 17:45) @done(19-08-08 01:30) @lasted(7h45m50s)
This has been started with the Users table, but need to add all the other tables as well. Users table probably also needs some extra functions
to handle other needs as for now it's just get, add, update a user.
✔ Add Redis for caching @created(20-09-22 12:38) @done(20-09-22 12:38)
☐ Use Redis for storing user auth data @created(20-09-22 12:38)
Users:
☐ Add users from chat - currently only adds users when clicking the button on the react page. @created(19-08-10 16:07)
✔ User levels for access and vip status. @done(19-08-10 16:12)
☐ Update this to be structured a bit better. @created(19-08-10 16:12)
Need to add constants for user levels and vip status. Probably some other things.
☐ Tracking vip status based on donation amounts / subscription levels.
☐ Accumulate points over time when users are in chat (options for whether broadcaster is live or not, different accumulation rates, etc)@created(19-08-10 14:17)
UI:
Landing Page:
Bot Settings: