Commit Graph

189 Commits

Author SHA1 Message Date
Chris Sexton aad4ecf143 bot: refactor callback handlers
New system:
* Each callback can filter for a regex
* Backwards compatability using a `.*` generic regex
* Handlers now accept a request object instead of bare arguments

All new plugins should use this new system.
2021-01-31 16:54:07 -05:00
Chris Sexton 1acb78bb5a bot: disable suffix commands 2021-01-09 17:27:52 -05:00
Chris Sexton c4605cfb77 git: don't unfurl links 2021-01-09 16:58:18 -05:00
Chris Sexton bbf5b27790 web: remove go template dependency
All vue pages now request `/nav` to get a JSON array of navigation
instead of relying on the Go template to have the nav built in. This
cleans up all of the crufty `{{ "{{ thing }}" }}` that was making it
hard to wriet vue.

This also paves the way to using the new Go resource embedding so that
the pages don't need to be wrapped in Go files.
2021-01-09 13:46:28 -05:00
Chris Sexton 9dbdd1f9a3 connectors: add translation layer
* URLs can be translated to slack/discord compatible
* Emojy have a connector-specific translation configuration
* Advent of Code plugin respects emojy and URLs
* Config can be wrapped in `` for JSON
2020-12-02 09:53:57 -05:00
Chris Sexton a30be0df8f meme/bot: add ephemeral messages 2020-10-24 10:04:53 -04:00
Chris Sexton 11224e0a2f bot: only provide help for whitelist items 2020-10-16 15:57:04 -04:00
Chris Sexton 5df7644229 remove more logs 2020-10-09 13:58:25 -04:00
Chris Sexton c8d01029ea admin: enforce admin status of users 2020-10-09 13:14:25 -04:00
Chris Sexton 969cbb37a1 mock: fix interface 2020-10-09 12:04:33 -04:00
Chris Sexton 2fb84219a0 whitelist: add whitelist of plugins 2020-10-09 12:00:10 -04:00
Chris Sexton a9937d9b8e discord: add discord functionality
* added discord connector
* modified user to support image avatars instead of URL avatars
* modified meme to send IDs instead of names
2020-09-09 13:21:39 -04:00
Chris Sexton 7b3179fe1d beers: reorder checkin logic 2020-06-17 14:31:30 -04:00
Chris Sexton 12ca34006f bot: add ability to disable plugins per channel
admin: use 'enable/disable plugin <name>'
2020-06-09 13:52:23 -04:00
Chris Sexton b13385774e beers: host your own images 2020-05-25 14:47:02 -04:00
Chris Sexton 0057f91ce6 connectors: add profile to get user icon 2020-05-08 17:49:55 -04:00
Chris Sexton cee267dbb8 admin: leave and come back 2020-04-29 17:48:55 -04:00
Chris Sexton 0b553da32d bot: respond to commands given by a message suffix 2020-04-21 16:54:03 -04:00
Chris Sexton 32d1ebaa95 bot: add new variables
* $time: a made up time
* $now: current time
* $msg: the user's message
2019-12-29 10:10:18 -05:00
Chris Sexton b6a89ff06a web: use secret instead of human test
* Applies for services that modify data
* Anybody in the slack can ask for the daily secret
2019-06-13 10:04:06 -04:00
Chris Sexton 05fd032bea web: bugfix pack
* menuize front page
* fix url bug
* fix cli
2019-06-09 00:54:05 -04:00
Chris Sexton 9ea45f0ad3 web: add a menu and redo index
We can add arbitrary links now with the `bot.links` config
2019-06-09 00:18:57 -04:00
Chris Sexton 3d51d33da9 slackApp: add logging function 2019-06-07 12:19:24 -04:00
Chris Sexton fe8763f78a first: change to per channel
And be sure not to pay attention to private/direct messages
2019-06-06 10:33:50 -04:00
Chris Sexton 20a56a4fcc web: small improvements 2019-05-27 22:16:35 -04:00
Chris Sexton 42f7f52bfb cli: make a new plugin 2019-05-27 19:23:05 -04:00
Chris Sexton f267ae07e3 slack: add image support
* Make untappd checkins embed images
* Added attachment types as an optional send arg
2019-03-09 22:41:43 -05:00
Chris Sexton a2d5d173f9 logging: switch to a logging library 2019-03-07 11:46:59 -05:00
Chris Sexton 47a824e8da remember: fixed something? It works now. 2019-02-15 14:54:14 -05:00
Chris Sexton 32ca0c5bf7 help: fix the help system after I borke it
* Also fix twitch's help registration and message
2019-02-12 12:26:27 -05:00
Chris Sexton a1e170aa40 slackApp: stop racing to serve on the http port 2019-02-07 14:45:59 -05:00
Chris Sexton a20839cdd7 bot: Invert RegisterWeb 2019-02-07 11:30:42 -05:00
Chris Sexton 980b079bf3 slackApp: create new connector for an app
* Using a library because I'm lazy.
* Fixed a few noisy things in Twitch and Untappd
* Moved connectors to a common place
2019-02-05 22:52:49 -05:00
Chris Sexton a25d7b9eff bot: get rid of a string
I introduced reflection earlier. I may as well go whole hog now.
2019-02-05 16:10:36 -05:00
Chris Sexton 4b5b66dd6d bot: unroll args 2019-02-05 15:24:49 -05:00
Chris Sexton f661d7dca2 bot: update callback registry types
Unfortunately, we can't hash the plugins. I went ahead and hashed the
types instead.
2019-02-05 15:13:32 -05:00
Chris Sexton 5ee5f33e36 tests: refactor for new system 2019-02-05 15:02:15 -05:00
Chris Sexton 933e514ddd bot: switch plugins to matching instance
instead of string
2019-02-05 13:58:12 -05:00
Chris Sexton 82dcf410f2 bot: hook connectors up to events
This includes a full test of `admin`
2019-02-05 13:42:15 -05:00
Chris Sexton d85c855d47 bot: rename a few things 2019-02-05 12:25:31 -05:00
Chris Sexton 1f69a653a9 tests: refactor mock to match new interface 2019-02-05 11:37:33 -05:00
Chris Sexton 3620208f33 irc: Update IRC connector to new structure 2019-02-05 11:20:43 -05:00
Chris Sexton e7c88c0c9c events: refactor
Combining all of the various send/recv functions into one
2019-02-05 10:54:13 -05:00
Chris Sexton 0593b4f164 config: set some defaults 2019-01-21 19:16:57 -05:00
Chris Sexton 742c76f562 config: add defaults checking where necessary 2019-01-21 14:24:03 -05:00
Chris Sexton 15168f5db0 config: all tests passing
* Using in-memory but shared DB. ALL TESTS MUST CLEAR RELEVANT TABLES
* Removed problematic reminder test
2019-01-21 12:36:55 -05:00
Chris Sexton a8d0f3fd34 stats: remove unused plugin
config: checkpoint

config: checkpoint all but two tests passing

config: checkpoint all but one test suites pass
2019-01-21 12:36:56 -05:00
Chris Sexton 3a7651d184 fact: add reaction type facts
If a user creates a fact with the verb <react>, catbase will try to
react with the emojy that the user specifies. It filters things with
spaces and fixes colons, but does not check if the emojy actually
exists. There will be no feedback in this case, which should probably
get fixed but meh.

* Updated mock bot to check reactions, and do filtering correctly.
* Added a couple tests of the react functionality.
2019-01-20 12:33:19 -05:00
Chris Sexton e15122cfe9 bot: refactor all rand seeds into main.go 2018-07-23 13:00:19 -04:00
Chris Sexton c639d460ac go fmt 2018-05-02 07:02:04 -04:00
skkiesel 1ac566c2c2 sokobass. 2017-11-02 16:32:02 -04:00
skkiesel 54b83cd444 listening to thread responses to rpg threads only 2017-10-31 14:14:45 -04:00
skkiesel d9bb7ec3c0 sometimes you have an id, sometimes a message, we should support relpying to both 2017-10-31 10:16:41 -04:00
skkiesel 3009a646e6 support replies 2017-10-31 10:07:20 -04:00
skkiesel d6c35b94ec cleanup! 2017-10-31 09:40:03 -04:00
Scott Kiesel 34e2404e8b hacked poc for edits as an animation mechanism 2017-10-31 06:22:36 -04:00
cws 9600e0dc63 inventory: initial sketch
Fixes #2
2017-09-29 00:58:21 -04:00
cws e56604f507 bot: change serve() to return an error
slack: don't fatal on EOF, reconnect
irc: don't fatal, just return error
2017-09-07 00:32:53 -04:00
cws 755cfc38cd slack: mark channels read, keep a current marker 2017-07-25 13:58:04 -04:00
Scott Kiesel e059b51fcf Merge branch 'master' into emojifyme 2017-07-25 06:17:11 -04:00
skkiesel 1b09106356 Add missing methods (React and GetEmojiList) to mockbot 2017-07-25 06:15:44 -04:00
skkiesel c6e1769f0f Parse incoming messages to see if we can annoy eaburns with emoji word replacements 2017-07-24 15:09:27 -04:00
cws d5bc4d8f45 bot: add missing mock func to fix tests
skiesel forgot.
2017-07-24 07:38:03 -04:00
skkiesel 1bf6997144 initial implementation and POC to getting reactions pushed into slack via catbase 2017-07-24 07:38:03 -04:00
skkiesel 8728d96639 initial implementation and POC to getting reactions pushed into slack via catbase 2017-06-17 16:20:06 -04:00
cws ef0afc2ee0 Fix detection of users on incoming messages 2017-01-05 09:48:57 -05:00
cwsexton 0badd5f2ce Add multiple command character support.
Now you can use ¡!
2016-09-27 12:42:00 -04:00
Chris Sexton 079c6ab2ec Fix variable support 2016-05-20 16:28:48 -04:00
Chris Sexton e6324ad5a2 babbler: Add all users in chan, add cfg'd users
Also misc small updates to the mock object for easier config usage
2016-05-10 21:15:52 -04:00
Chris Sexton 8485ed9fe3 Fix Whoing a channel and factoid timer 2016-04-21 11:19:38 -04:00
Chris Sexton e449a82001 YOLO: DEAL WITH IT
Refactored a bunch of junk.
2016-04-01 10:20:26 -04:00
Chris Sexton ef40d335eb Make testing great again! Add examples in counter
* Made bot.Bot an interface and added a mock with an in-memory database
for plugins to use.
* Remove logger nonsense
* Rename Counter New
2016-03-30 12:41:22 -04:00
Chris Sexton a34afa97ad Switch web query to a regex 2016-03-29 12:34:04 -04:00
Chris Sexton dc793a18c9 Fix help command to only respond when there is a space afterwards 2016-03-21 18:05:51 -04:00
Chris Sexton 2a702c7061 Fix license tags 2016-03-19 15:32:51 -04:00
Chris Sexton ae5d7dec2e Migrate to sqlx; modularize counters 2016-03-19 14:02:46 -04:00
Chris Sexton dc1239783e Initial slack worky worky 2016-03-10 21:11:52 -05:00
Chris Sexton 51d7f7f067 Move IRC stuff to its own package 2016-03-10 13:37:07 -05:00
Chris Sexton 74e981eedf Fix imports; Use SSL by default
Fix imports to point to github instead of code.google
2016-01-17 22:51:11 -05:00
Chris Sexton d261fcc406 AlePale -> Catbase => velour 2016-01-17 13:00:44 -05:00
Chris Sexton 56c6d84813 Add TODO, small fix to factoid web interface 2016-01-17 12:45:07 -05:00
Chris Sexton 782d074bdf Get the bot online; make counters work
Mostly just silly stuff to get everything working.
2016-01-15 08:59:51 -05:00
Chris Sexton 1efa7ebcd4 Initial mongo->sqlite move
Tons of bugs, I'm sure. This commit  mostly gets the bot moving towards
SQLite. It builds, but many plugins have a log.Fatal to prevent their
use and it has not been tested.
2016-01-15 08:17:26 -05:00
Chris Sexton d298dac814 Fixes #30: Lowercasing the search 2014-04-20 21:12:08 -04:00
Chris Sexton a07a6adc0d Fixes #46: Filter self out of user list 2014-04-20 21:06:42 -04:00
Chris Sexton 1827765a4d Fixes #56 again because I did it wrong. 2014-04-20 15:08:24 -04:00
Chris Sexton 7f093b003e Added AUTHORS file and info in all files.
Thanks to https://github.com/eaburns/license
2013-12-10 18:37:07 -05:00
Chris Sexton 449b9ca499 Fixing user assignment bug 2013-09-02 13:38:27 -04:00
Chris Sexton d7389dfc5d Removing debug stuff 2013-09-02 13:35:38 -04:00
Chris Sexton d35fba2f87 Fixing admin rights & user entries 2013-09-02 13:34:20 -04:00
Chris Sexton 9e1d3de25c Changing to match many people 2013-08-30 22:09:45 -04:00
Chris Sexton 0627f8a015 Fixes #41: Don't require a space for a command 2013-08-26 12:18:57 -04:00
Chris Sexton 0acd004e59 Fixing self remembering problems stemming from lib change. 2013-06-17 00:04:10 -04:00
Chris Sexton 76e6644b8b One more fix to the fact spitter.
Turns out channels have case.
2013-06-16 22:40:30 -04:00
Chris Sexton eff200ee15 Fixing multi-channel factoid squirts. 2013-06-16 21:03:43 -04:00
Chris Sexton 2c0dc55452 Big overhaul again! Replaced fluffle's goirc library with velour/irc.
Hopefully this new library will provide me with some benefits such as being able
to actually get and respond to a WHO message. Yet to do is to fix sendMessage to
be a channel on Bot with a goroutine that formats and sends messages on. Also,
figuring out how to handle the WHO response and populate users.
2013-06-01 22:06:31 -04:00
Chris Sexton 2fc9fd1c84 Making index page a bit better 2013-06-01 13:39:17 -04:00
Chris Sexton 242be51029 Making the web interface a bit better 2013-06-01 13:29:12 -04:00
Chris Sexton edd941fe46 Initial (ugly) web interface 2013-06-01 13:10:33 -04:00
Chris Sexton 13fa9dd079 Removing unused variable 2013-05-07 20:58:20 -04:00