A chatbot for the chat room #26
It could be fun to program a chatbot for the chat room.
Some things it could do:
- Have a "Robot Games" public channel where people could play group trivia games, hangman, or other fun activities with the chatbot.
- If people DM it, it would be in regular chatbot mode and have conversations. They could ask it questions about the chat room or website and get automated answers (e.g.: how do I go on webcam?)
- It could have some keyword triggers or commands in public rooms. Example, if someone shares too many pictures on the main channel to tell them to use the photo sharing channels.
- It could auto-moderate the room, e.g. if somebody is spamming too rapidly to kick them from the room.
Some technical aspects:
- Use RiveScript for its chatbot engine (of course)
- The bot could set user variables so it knows when a message was sent in a public channel vs. a DM (the bot would be quieter in public channels as to not spam too much, but respond to every DM in direct chats)
- If a user sends the bot an image over DM (since the bot might have chat admin status, and picture sharing is allowed in DMs with an admin), it could detect the
<imgtag and reply saying it doesn't have eyes to see it.
- The bot engine would set the user's
namevariable to their chat nickname automatically.
- Have a "reload" command to allow refreshing the bot's brain/functionality without fully turning it off and on again (so during development it doesn't need to exit/rejoin the room so many times).
- It would have a user account on the website and have to log in with password to get the JWT token. It should have admin status with only chat moderation scopes.
Official support in BareRTC
To simplify the implementation, the BareRTC repo may as well include the chatbot as a first-class citizen.
It could be at
cmd/chatbot/main.go and build as its own binary and have an API like:
chatbot init [path]to initialize a chatbot somewhere, default path being "./chatbot" in the git repo which would be git ignored. The folder would contain the config file, RiveScript replies, and everything else your bot needs - decoupled from where the
On the BareRTC API, add an authentication endpoint for chatbots:
- Using the Admin API Key as a shared secret to post to the endpoint
- Endpoint would receive JSON of your JWT claims you want for the bot: username, admin, emoji
- Endpoint would sign and return the JWT token, so you can authenticate directly with the WebSockets server.
The BareRTC repo would also provide the client websocket API.
Misc ideas what it could do
- Unit conversion via emoji reactions
- Emoji reactions on BareRTC can technically say anything I want, not just an emoji.
- Example: if a user mentions a temperature in Celsius, put an emoji reaction that says the conversion in Fahrenheit and vice versa.
Deleting a branch is permanent. Although the deleted branch may exist for a short time before cleaning up, in most cases it CANNOT be undone. Continue?