jasonkeene / anubot Goto Github PK
View Code? Open in Web Editor NEWA New Bot for Twitch
A New Bot for Twitch
This can just be state that is stored in the client.
This includes both disconnects to Twitch/Discord but also disconnects of the electron app to the api.
bot.Bot
no longer manages connection state so there is a lot of code to rip out. It is now a long running process that runs concurrently alongside other instances. It receives messages from dispatch
and writes messages out via stream.Manager
. It needs to be able to be reconfigured on the fly to enable/disable features. Perhaps there needs to be some sort of bot.Manager
that serves as bookkeeping so that the api
can communicate directly with the bot.
bot.Manager
.Consider supporting multiple currencies.
I initially delegated topic resolution to the store. This can be statically set when creating a connection in the stream.Manager
.
dispatch
needs to:
Things to consider:
Remaining TODOs:
We'll likely want to leverage the permission systems of Twitch and Discord.
After reading over their readme this would be a good fit for persisting data while in development.
WHISPER is not a standard command, it is something we request the IRCv3 capability for. We might need to patch fluffle/goirc to support dispatching these commands. Here is the relevant post:
A few of the store methods do not return errors. This was because with dummy implementation everything was done in memory. Now that there are actual backends errors need to be returned.
This can be done right before public release.
I got this in my logging one stream, should probably look into it:
@badges=turbo/1;color=#B20AC2;display-name=Aeowynne;emotes=;mod=0;room-id=123750783;subscriber=0;turbo=1;user-id=36125726;user-type= :[email protected] PRIVMSG #postcrypt :ACTION has no idea wtf is going on. In purple
Allow users to search their chat history.
I've started some work on this locally.
Saw this in one of our builds:
https://travis-ci.org/jasonkeene/anubot/builds/168160513#L915
Messages need to be stored. Just need something that pulls from dispatch
and writes to store
. There needs to be a query interface on the store to search through messages for a given user. Eventually this will be elastic search but for now just implement something naive.
To.Be.True
and To.Be.False
This will include the logo and wordmark.
Some music services to consider integration with:
Just need to swap out the badge code with something that pulls from here: https://github.com/justintv/Twitch-API/blob/master/v3_resources/chat.md#get-chatchannelbadges
This will take considerable thought. I was thinking about implementing some sort of filtering system so that you can have a single unified chat and simply filter in/out what you want. Discuss this more with thaithyme.
This will include:
/ci
./ci
Basic ideas:
The output when assertions fail with testify is not detailed enough. Move tests to using a8m/expect.
The client currently stores the username/password in localStorage. This will not work for features like second factor auth. This is required for #36.
This lookup should probably be done outside the store layer. Store should have no concern about Twitch's API.
The api
package needs to subscribe to messages from dispatch
and send them down the connection when it is properly authenticated.
User should be able to change their stream status and what game they are playing. The UI for selecting game needs to cache popular games but allow for manually typing in their game.
twitch.API
This is dependent on #35.
Discuss this with thaithyme to see if it would be useful.
Lots of work to be done here. I'll need to flesh this issue out when I start on it.
When I pulled out the IRC connection logic from the bot I forgot to request capabilities from the server.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.