Hello! I am a software engineer based in Singapore.
I work across the stack and enjoy using TypeScript, Rust, Python, Terraform, and a few other tools.
For an overview, check out gyng.github.io
Ruby bot with plugins. Has full IRC, basic Slack and Discord support.
License: MIT License
Hello! I am a software engineer based in Singapore.
I work across the stack and enjoy using TypeScript, Rust, Python, Terraform, and a few other tools.
For an overview, check out gyng.github.io
Seems like discordrb is taking control of the EventMachine reactor? Timers added after @client.run
do not trigger at all.
Would be a pretty neat thing to have. Will need to persist the database and expose webserver ports.
Might need to move settings files around into a directory to be persisted. Databases should already be in a directory, check if the database constructor needs to be locked into the database directory.
Right now it does, and is really scary. We can just wrap a begin
-rescue
-end
around the plugin entry point.
It would be great if the Docker build process is tested.
Need to figure out how to do this. Maybe pass the command map from core to adapters on startup.
Most can be replaced with rest-client, which is included in the Gemfile.
Should, as a forward-compatiable alternative, load from index.rb
or main.rb
or plugin.rb
instead of pong.rb
.
This will let us serialize references to messages.
Use case:
Serialize remind timers so they persist between restarts.
It is a mess right now. It
Ideally, default settings files should be checked in, and verified on plugin/adapter load. Empty .user.json
files (eg, {}
, or { api_key: 'CHANGE_ME' }
should be generated on load if they do not exist.
A file structure might look like
- settings
- defaults (checked in, verified on load)
- adapters
- plugins
- ping.default.json
- tell.default.json
- bot.default.json
- user
- adapters
- plugins
- ping.user.json
- bot.user.json
user.json
files should not be checked into git.
http://mylink some text
matches the entire string instead of http://mylink
.
For a start, core, adapter, and plugin classes.
Slack seems like a good fit for betabot since it's pretty much IRC++.
Also consider the differences in message format: adapter might require additional work to make plugins fit Slack better (eg. attach adapter name to messages so individual plugins can decide how to format text, or call adapter-specific-message methods).
This is due to EventMachine refusing to die. SIGTERM and SIGINT need to be trapped. The webserver also needs to be killed if it exists.
This will make maintaining, publishing, and updating plugins easier, as there is no longer a publishing step.
Rakefile
tasks (convert existing ones to use git), maybe allow a tag optionlib/plugins
to plugins
Gemfile
packages
directorybroadcast
static methodorigin
attrThis will make it transparent to plugins.
Right now it's only for plugins.
So plugins specific to an adapter(s) can be loaded just for that adapter.
Slack has formatted text which is unescaped and stored in message.text
. We want to preserve the original formatted message somewhere.
It's no longer used now that plugins use git.
Nobody but me really needs to know the details of bundled plugin dev.
It's terrible having to run twice before being able to config. Maybe a ruby setup.rb
will be nice.
Adapters should have validate_addr
.
Instead of blacklist_user
, unblacklist_content
etc., do a blacklist user add foo
, blacklist user del foo
.
Will need to do an enum check for the type (user, content, etc), since that is implicitly done using the former right now.
https://github.com/socketry/async
EventMachine is showing its age.
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.