+ BotConfig.register BotConfigFloatValue.new('server.sendq_delay',
+ :default => 2.0, :validate => Proc.new{|v| v >= 0},
+ :desc => "(flood prevention) the delay between sending messages to the server (in seconds)",
+ :on_change => Proc.new {|bot, v| bot.socket.sendq_delay = v })
+ BotConfig.register BotConfigIntegerValue.new('server.sendq_burst',
+ :default => 4, :validate => Proc.new{|v| v >= 0},
+ :desc => "(flood prevention) max lines to burst to the server before throttling. Most ircd's allow bursts of up 5 lines",
+ :on_change => Proc.new {|bot, v| bot.socket.sendq_burst = v })
+ BotConfig.register BotConfigStringValue.new('server.byterate',
+ :default => "400/2", :validate => Proc.new{|v| v.match(/\d+\/\d/)},
+ :desc => "(flood prevention) max bytes/seconds rate to send the server. Most ircd's have limits of 512 bytes/2 seconds",
+ :on_change => Proc.new {|bot, v| bot.socket.byterate = v })
+ BotConfig.register BotConfigIntegerValue.new('server.ping_timeout',
+ :default => 10, :validate => Proc.new{|v| v >= 0},
+ :on_change => Proc.new {|bot, v| bot.start_server_pings},
+ :desc => "reconnect if server doesn't respond to PING within this many seconds (set to 0 to disable)")
+