Automatisms of Eggdrop

From EggWiki
Revision as of 18:20, 14 September 2024 by DasBrain (talk | contribs) (Created page with "== Preface == Eggdrop was created as a channel management IRC bot. Without any configuration or scripts, it will do a few things that may annoy you, or the IRC operator. As the owner of an Eggdrop, '''you are responsible for the behavior of your bot'''. This page should help you understand those automatism, and give you hints on how to configure your Eggdrop in such a way that it suits its mission. Often it is enough to follow one of the suggestions. == irc module ==...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Preface

Eggdrop was created as a channel management IRC bot. Without any configuration or scripts, it will do a few things that may annoy you, or the IRC operator.

As the owner of an Eggdrop, you are responsible for the behavior of your bot. This page should help you understand those automatism, and give you hints on how to configure your Eggdrop in such a way that it suits its mission. Often it is enough to follow one of the suggestions.

irc module

keep-nick

If the keep-nick setting is enabled (the default), Eggdrop will regularly try to change its nick to the contents of the nick setting if the current nick is different.

This can go wrong if:

Services enforcer (NickServ)

When Eggdrop fails to identify with NickServ and has their nick forcibly changed to Guest12345. This often leads to a loop where Eggdrop will change their nick back once it has been released, and then NickServ changing the nick back to Guest12345 in an endless loop.

Suggestions:

  • Setup SASL in the Eggdrop config (if the network supports it)
  • Disable the enforcer for the bot nick (often through a command like .msg NickServ SET ENFORCE OFF)
  • Install a script that authenticates to NickServ when NickServ complains. (Only needed if SASL is not supported)
  • Disable keep-nick in the config

/SANICK and similar shenanigans

Channel module

Eggdrop & Channels

Unlike most IRC clients, Eggdrop knows which channels it wants to be in, and where it does not want to be in. Eggdrop wants to be in the channels that have been added and are not set to +inactive

Eggdrop will regularly try to join every channel it is not in but wants to be in. Eggdrop will also leave all channels it does not want to be in.

Where this can go wrong:

Network autojoin channels

Some networks have a channel every new client will join after they connect.

Suggestions:

  • Ask for an exception for your bot.
  • Add the channel to eggdrop, so it won't leave it.
  • Leave things as-is - Eggdrop will join the channel on connect and then part it.

Channel Forwards

Many networks support features to forward a client when it can not join a channel. This will forward Eggdrop to that channel, then Eggdrop will part the channel because it does not want to be in that channel, which is repeated every minute. (This will annoy a lot of people)

Suggestions:

  • If your network has a no-forward usermode, set it. On libera, this usermode is +Q.
 The config has an example that sets and unsets some usermodes on connect.
  • Use a script to set the channel Eggdrop has been forwarded from to +inactive

Auto-rejoin after a kick

Even after a kick, Eggdrop wants to be in the channel, so it will join it again. Some consider this rude or do not like it.

Suggestion:

  • Use a script to set a channel to +inactive after it has been kicked.

Need ops

Eggdrop wants to be a channel operator in all channels it is in (and complain if it does not have ops) Eggdrop will trigger the need binds/need-ops setting once every minute, so if you have scripts that work on those, it might be a good idea not to flood services or other means

Ban/Invex/Exempt lists

Eggdrop has an internal ban, invex and exempt list. In the default configuration, Eggdrop will expire bans after 120 minutes, and invites/exempts after 60 minutes. Depending on the setting, eggdrop may also reapply a ban that just has been removed if it is on the internal ban list.

The relevant channel settings for bans are:

  • ban-time: Default ban time. Can be set to 0 to not expire bans.
  • dynamic-bans
 If enabled, Eggdrop will only place bans on the internal ban list when needed (someone with a matching host is in the channel)
 Also, Eggdrop will expire user bans after ban-time
 If disabled, Eggdrop will place all bans in its internal ban list in the channel and reapply it if it was removed.
  • user-bansIf disabled, eggdrop will remove bans set by users.

invex/exempt have similar settings.

Suggestions:

  • Disable dynamic-bans - this is usually a good approach, but makes the internal ban list less useful, as you are now limited by the maximum number of bans you can have on a channel.
  • Set ban-time to 0 - then eggdrop won't expire bans by default, but bans it places as retaliation also do not expire.

Mode lock

Eggdrop has a mode-lock channel setting. It will try to keep those modes on the channel. If the network channel service has a conflicting mode-lock, Eggdrop may fight with the Services over the channel modes.

Suggestion:

  • Set mode-lock to nothing and use the network channel service to enforce modes.

Cycle

By default, Eggdrop will leave an empty channel where it does not have channel operator status and immediately rejoins it to gain channel operator status (cycling). This can go wrong if the channel is registered - as the services will remove the channel operator status immediately. This also won't work if Eggdrop is on a restricted connection or the server is in split-mode (not granting operator status in new channels).

Suggestion:

  • Disable the cycle channel setting.

Flood

By default, eggdrop has some sane default for the flood settings. You may want to change those.

Stopnethack & nodesynch

Stopnethack tries to prevent "server ops" - a server giving someone ops. Nodesynch tries to prevent non-ops from doing things only channel ops can.

How it can go wrong:

Net rejoin after wait-split

If a netsplit goes on for longer than wait-split seconds, Eggdrop considers the rejoin to be a new join, triggering stopnethack.

Suggestions:

  • Increase wait-split
  • Set -stopnethack on all channels

Oper override

Oper override triggers a desynch. Messing with ircops is a good way to get banned from the network.

Suggestion:

  • Set +nodesynch on all channels.

Services joining the channel

Services usually join the channel with server ops (nethack). On other networks, it appears that the Services give themself ops (desynch).

Suggestion for nethack type networks:

  • Add a handle with the +e (nethack-exempt) flag for the services.
  • Set all channels to -stopnethack

Suggestion for desync type networks:

  • Set all channels to +nodesynch

Other operator modes (+q and +a)

Eggdrop does not recognize other prefixes as operator, so giving someone +q or +a without +o makes Eggdrop believe that the user is not a channel operator. When that user then does something only channel operators can do (/kick, /mode...), it will trigger a desync.

Suggestion:

  • Set all channels to +nodesynch

Revenge & bitch

Those options are disabled by default.

CTCP module

By default, Eggdrop will answer CTCP requests. That behavior can be changed in the config.