tbuehlmann / ponder Goto Github PK
View Code? Open in Web Editor NEWPonder (Stibbons) is a Domain Specific Language for writing IRC Bots using the EventMachine library.
License: MIT License
Ponder (Stibbons) is a Domain Specific Language for writing IRC Bots using the EventMachine library.
License: MIT License
Implement a ban method.
Get on :on user_mode
event handler.
Auto rename does not work as intended.
Get MODEs after joining a channel. Adapt the on :join
handler. Let's have two, one "raw" after joining and one "initialized" one for the moment we got the user list and modes?
Also, parse incoming mode answers, like 324, 329.
Update README regarding :defer => true
and Async IRC methods.
Remove code for popping a queue for async responses and rewrite it with EM::Deferable.
Have a configuration for hiding PING PONG events.
Add some information about EM::Timer
and EM::PeriodicTimer
.
Get DCC support for sending files.
Add Formatting information to the README.
Get on :channel_mode
event handler.
Rewrite tests. Test async methods with an emulated an IRC Server. Rewrite test_helper, remove Pathname. Test filters.
Would be nice to have ISUPPORT: http://www.irc.org/tech_docs/draft-brocklesby-irc-isupport-03.txt.
Try to have all known users (in @user_list
) to be as up to date as possible. Update user data on whois and other events.
I want an on :disconnect { โฆ }
!
Have a config option for rejoining a channel after being kicked.
Add a redis Last Seen example.
More Wiki contents needed.
on :join
handler the user has no access to the channel's user list or chanel modes.Use Travis CI's Build Matrix for testing different EventMachine versions.
Rewrite Logging.
Add Notifications to be able to do metrics and debugging. Maybe logging through Notifications?
Move stuff from https://github.com/tbuehlmann/ponder/blob/7af6ffcb53e364f9077e26b9bf28583403721e08/lib/ponder/irc.rb to the User
and Channel
classes.
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': /usr/lib/ruby/gems/1.8/gems/ponder-0.0.1/lib/ponder/thaum.rb:232: syntax error, unexpected ')', expecting '=' (SyntaxError)
/usr/lib/ruby/gems/1.8/gems/ponder-0.0.1/lib/ponder/thaum.rb:242: syntax error, unexpected kEND, expecting $end
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/lib/ruby/gems/1.8/gems/ponder-0.0.1/lib/ponder.rb:12
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from bot.rb:2
The examples could need an overhaul.
Don't defer each and every callback, let the user decide whether the processing should be defered.
Something like:
@ponder.on(:channel, :defer => true) do |event_data|
# ...
end
Hi, is there anyway to disable the bot from logging to stdout?
Exceptions thrown inside an on
-block will be handled. When using Async methods like whois
, the provided callback/errback code will run inside the EM-reactor and won't be exception handled. Example:
@ponder.on(:channel, /foo/) do |event_data|
# does not explode
1/0
end
@ponder.on(:channel, /!explode/) do |event_data|
whois = @ponder.whois('foo')
whois.callback do |whois_data|
# does explode
1/0
end
end
I'm pondering about using Fibers to stop execution on whois
and resume it when the whois_data
has arrived. Will also reduce entangled evented spagetti code. Gonna check if possible and non-blocking..
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.