headline Benderirc

BenderIRC Homepage

- Release 1.5 -

- www.BenderIRC.de -

done by Cyborg

Latest Version
screenshot Download Bender 1.5rc1

It`s everytime a good idea to read history and docs before upgrading
screenshot Download ConfigTool *BETA*

girlies it`s really beta.. pls use Bugzilla to report bugs.
FAQ: Why do I don't see images? you did not start it in the directory where depacked it. Start it via WB or be in the right directory...
screenshot Download Picture_Plugin *BETA*

This is the first version of picture_plugin. It shows a list of logged in users as gfx. It`s like an icq "display" but with more gfx ;-)
Feel free to suggest features for it.
- MOTD fixed
- DECCSENDREQ build.. now dccsend is useable for buttons..
- Configtool BASIC-Release ready...
- Fixed bug in downloadpath handling..
- added some new options
- background color changed to white , looks much better
- on startup, pp sends /ISON Requests to the server , to see who is online even if not in channel
  this is usefull if you start it after you joined a channel..
  - pp updates with every /ISON which is send, even if You used it.

Final RC1 release of 1.5!
- graphical config tool R E A D Y

Welcome to BenderIRC

This is the BenderIRC Homepage. BenderIRC is an Amiga-Only IRC-Client. Bender offers you any common IRC command and a free designable GUI. This means you can make BenderIRC to look like Opus Magellan or WB 3.0 Gadtools, or Reaction. It`s full resizeable and uses custom fonts on request. Bender comes with a package of seperate DCC tools, to be independent from future changes and to offer you the option to use your own DCC routines or exchange the DCC-tool with a speically adapted version for a specific remote client. Bender brings you a full featured IRC Bot and a seperate scripting language.

Ok, let`s start. If you need help with IRC click here for IRC-Help.

Press TAB to have a NickNameCompleder

Configure your Client

The configfile is easy to setup, just start your favorite texteditor and edit the standart BenderIRC.cfg or one the examples configs in BenderIRC/cfg/. The commands used are explained here:


i.e. MOTD

disable MOTD messages at startup


i.e. querywindows

Enable querywindows at startup.


i.e. background X=0 Y=0 W=720 H=480 name="progdir:ircbot.gif"

where (X,Y) is the left-top-position on the Workbench and (W,H) the width(weite) and height(höhe) for the window. The given graphic should be exactly the same size! "Progdir:" is a special dos assign given to all new programs and shows allways to the directory where the program was startet. You can use a full qualified path to the gfx as well.


i.e.ICON SEQ="LOL" file="sources:smiles/icon_twisted.gif"

You can use a replacement graphic for nearly any text which is written to the outputwindows! The given example would replace the text "LOL" with . You can have as many relacements in a line as you want, and as many replacement sequences , i.e. LOL , as your system can take.

You should define ":-))" before ":-)" or you get this ")" .

not really, but you have to keep in mind, that for a printed line all chars are matched against ALL sequences you have in your config!
This will slow down your client. I have app. 10 sequences defined in my test config and did not get a performance decrease , but that was not a high traffic test.
If you wanne build your own icons, the backgroundcolor should be $959595 => R=149 G=149 B=149 and it should be not greater than the used font.


i.e. button x=10 y=10 w=50 h=15 command="/OP %u" name=OP

a button is a normal buttongadget with the GadgetText = name , which performs the given command "command".
%uwill be filled with the selected username in the userlist
%cwill be filled with the actual channel


You don`t need ANY Button!


i.e. input x=10 y=450 w=700 h=15 name=eingabe

this positions the input-String-Gadget. Depending on the font, you could use a H=0 to AUTOSET it, thats a feature of GuiEnv and if this fails don`t blame me :-)


You don`t need an InputGadget!


i.e. output x=120 y=30 w=710 h=440 font=helvetica.font fontsize=18


Position the gadget over the whole window if you like that. This can be usefull for presentation in an office or what ever you think why noone should use this Client. If you have i.e. a conference with moderated irc sessions and you don`t want everyone at theire places to join in or you want to project it to be visible for everybody!


W and H mean here absolute positions like X and Y


i.e. userliste x=10 y=180 w=100 h=200

Places the userlist at X,Y. Remember that there will be a ScrollerGadget to right side of the userlist. Leave space for it!

You don`t need this Gadget!

Since 1.5b11 H means here absolute position like X and Y


i.e. counter x=10 y=390 w=100 h=15 name=BytesCounter

This Gadget shows you the actual traffic caused for this client. it does NOT show you how much you have send!

You don`t need this Gadget!


i.e. usercounter x=10 y=415 w=40 h=15 name=UserCounter

Shows how much users are in this channel!

You don`t need this Gadget!


i.e. Lampdisplay x=120 y=9 w=230 h=19 on=progdir:Lampan.pic off=progdir:Lampaus.pic

The Lamps show you the settings of you client. From left to right these are:

if not further noticed on=aktiv/enabled off=inaktiv/disabled

  1. NoColors
  2. NoMsgColors
  3. NoNoticeColors
  4. NoNameColors
  5. Translation
  6. HeartBeat
  7. Outside BOT Access
  8. Entertain
  9. BeNice-Mode
  10. AutoAway-Mode
  11. Security-Mode

You don`t need this Gadget!


i.e. Status colors noticecolors msgcolors namecolors noautoaway

This is no gadget. It en/disables features at startup. DCC

i.e. DCC ip= port=2001

That`s special. Port ist the uses DCC Port for DCC Sends! IP is the IP used by the Bot to tell the receiver to connect to your host. If you want to make a dcc send to anyone outside your LAN , enter here the IP for your internetgateway ( router ) and activate IP-NAT-PORT-FORWARDING on Port 2001 (s.a.) to your local machine same Port ( 2001 ). It will work! If you have a dynamical IP on your Router like most DSL / Dial-UP users will have, you have to change the IP on the settings everytime your router gets a new IP!


i.e Download Pfad=Amitcp:blackirc/downloads

Here your incoming DCC Files will be downloaded to.


i.e LOG logfilename=dh2:bender.log

sets new logfilepath&name.


i.e MESSAGES QUIT="your quitmessage"

sets new quit message.


i.e. name=testchannel Server=irc.phat-net.de Nick=BenderIRC channel=#AmigaFun port=6667

The server settings. Ignore name for now. the rest should be self explaing

Relativemode *BETA*

You wanne have your gui resizeable?

RELATIVE work at the moment only for BUTTON. INPUT and OUTPUT use other systems:
set this gadget relative to a windowborder!

i.e. output X=5 Y=5 W=-5 H=-5 RELATIVEH RELATIVEW

will setup the outputgadget to be 5 pixels away from each windowborder. But: the resizing works typical only for the right and bottom border. Why? because you in/decrease window on the lower right corner.

Input & Output

  • RELATIVEX: sets X value as offset from the right border. Default is left border
  • RELATIVEY: sets Y value as offset from the bottom border. Default is left border
  • RELATIVEW: sets W value as offset from the right border. Default is width in pixels.
  • RELATIVEH: sets H value as offset from the bottom border. Default is height in pixels.
You can use these options in any order and any combination with this result:
a value Y= -20 will indicate , that if i.e. relativeY is set, you want the upper border of the gadget 20 Pixels away from the window border , direction top border. A positiv value would indicate that you wanne have it outside of the window!
Same thing with the right border : - indicates direction is inside window, + will be outside.

X=10 Y=10 W=100 H=15 Gadget will always have the same position and size.
X=10 Y=-90 W=100 H=15 RELATIVEY Gadget will always postion 90 pixels away from bottom border with same size.
X=10 Y=10 W=-10 H=-10 RELATIVEW RELATIVEH Gadget will always keep the left/top position, but will stay 10 pixels away from the bottom/right border
X=10 Y=-30 W=-10 H=-10 RELATIVEW RELATIVEH RELATIVEY Gadget will always position at 30 pixels from bottom border an will end at 10 pixels from bottomborder and 10 pixels from rightborder. As result, you will move it with the bottom border :)
These feature is *BETA* don`t asume that it will be in the next release like it is today!
It will change!!

It could not be easier. Assign the subdirectory bin to "bin:" or copy the content to your bin: Volume. "bin:" is mostly part of the amitcptree. if not already done, assign c: bin: add

i.e. "assign bin: benderirc/bin add"

and mosttimes you need to assign libs: .../benderirc/libs add

Copy the fonts to your fonts: if you wanne use xen.font. if not , topaz is used. If you have set a font for the outputwindow this one will be used.

if you can`t install it, wait for the InstallScript, could not take to much time

this should work

(one time) : copy Benderirc:env/#? env: all

Add to your s:user-startup

assign benderirc: path.../BenderIRC
assign c: benderirc:bin add
assign libs: benderirc:libs add
assign fonts: benderirc:fonts add

Edit your BenderIRC.cfg with a texteditor and change the PATHs for set & unset arguments!!. change your NICKNAME too!.

Channels can be found here.

Oh yeeear PlugIns! These are great!

You want to have something done which Bender does not offer, write a plugin, send it with installdocs to plugin@benderirc.de and let others have it too.

How to build one?
Easy, take one of the ExampleSources and rewrite it!
In one of the next releases i will add an irc.library with alle needed code like color decoding aso.

How to register a Plugin?
Send a register message to the BenderClient you wanne register to
BenderClients listen to UDP packets on a given port. Any Bender will setup an udp server port in the portrange from 54321 -> 65535, beginning with 54321 and going up the list of port until it can bind to that port.

If another bender is listening to the port it can not bind an skips to the next free port.
Your Plugin has to send his udp listening port his name and its priority +-2^8 to bender:
matching these args: REGISTER/S,localhost/N/K,NAME/K,pri/N/K

Example: REGISTER localhost=3000 name="myNewPlugin" pri=0

To unregister it has to send another message to bende:
matching these args: UNREGISTER/S,NAME/K,PORT/N/K

Example: UNREGISTER name="myNewPlugin" port=3000

What does your Plugin get?
Rawlines, like Bender gets them.
  • After sending a register message to bender you will receive an ok-message from that bender you registered to, on you given udp listening port.
    "001 OK" and "002 #CHANNELNAME"

  • You can get a "999 QUIT" from a Bender which means that this bender will no longer serve you. This will happen if Bender quits, or if someone entered a flush plugin command.
  • All other messages are RAW IRC Lines directly from the IRC Server

And now?
Process & Send Data from/to BenderIRC
Parse the lines yourself if you whish or wait for an earthquake or whatever your Plugin will wanne do. Everytime Bender gets a new Line it will send this like to ANY registered plugin via UDP.

What you don`t have to do!
Answere to IRC Server Messages!
Because Bender is handling these too and i don`t know what nervous server demons do if they receive two or more answeres.

OK, my script wants to send something to the channel!
Ok, just send it to the Bender port your plugin has found.
Send an UDP packet to the port you have found that a bender uses. If you don`t register or unregister, everything will be processed like it was entered in the input gadget. If you wanne show up in the display gadget only, send an "/ECHO ..." message. If you wann have it in the channel, remove the leading "/ECHO".

Scriptwriters beware of sending hidden texts to the Channel!

Bender can reroute your lines to the display gadget on request and it won`t be funny anymore ;-) . Ok, if you wanne output to the channel and to the display gadget, just send two packets!

Something else?
No , not really.
  1. As you can imagine now , your plugin is no Script! Your Plugin is a standalone programm which receives and send tcp packets. It has all resources of your amiga and can do what ever you wanted on IRC!
  2. Security The PluginSystem is not secure by nature! If you send a udppacket from a remote host to a listening bender port, it will be handled as it was from a local plugin . This opens ways of attacking your amiga! If the Security option is set any incoming packets except register and unregister messages are not handled! If Security is on, noone will be able to take over your client, your channel, or something else. All plugins will get theire rawlines and cann process them, but that`s it!

    There is another way to be secure noone else will send you packets

    enter this line if you run MiamiDX :

    ipfw add 1001 drop udp from not to any 54321-54300 via eth0


    ipfw add 1001 drop udp from not any to any 54321-54300 via eth0

    Use the first one, if you want to allow access from your LAN , and the second if you don`t trust anyone or you are on a dial-up connection without a LAN.

  3. The funny part ist, that you can all forget that, if you are on a LAN and your router does not explicitly forward incoming UDP packets on the shown ports to your host! *G*

What do these plugins all day?

LogWriter LogWriter is a simple RAW line logfile writer. Which does nothing more than outputing every line it gets to a file or a window depending on where you redirected the output..
ColorLogWriter ColorLogWriter is an advanced logfile writer. Which decodes IRC colorsequences for shell output. everything else works like logwriter.
html This plugin grabs WWW URLs and uses httpget ( benderirc/bin ) to get this URL from the webserver and uses mltiview to display it. This works only if you have an html.datatype installed!
html2 This plugin does the same thing as html.plugins, but does not react immediatly to the URL. Instead it displays the link in a windows and get the webpage if you click on it.
Triggergrab Do you know these ad bots with there trigger ads in the channel window? You will like this plugin! *G*
Serverlist If you start this plugin, you will get a window with all kown irc-servers. Loading the databse could take a long time. 365 Server are kown to BenderIRC by now. If you wanne add one yourfself, just make a textfile like you find it in servers and place it under a name and netdirectory.
You need a "envarc:benderirc/server" containing the diretory where to find the servers i.e. "benderirc:server"