summaryrefslogtreecommitdiffstats
path: root/alternativ_nick.py
diff options
context:
space:
mode:
Diffstat (limited to 'alternativ_nick.py')
-rw-r--r--alternativ_nick.py98
1 files changed, 0 insertions, 98 deletions
diff --git a/alternativ_nick.py b/alternativ_nick.py
deleted file mode 100644
index 9041f21..0000000
--- a/alternativ_nick.py
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/usr/bin/env python
-"""
-alternativ_nick.py - Use an alternativ nick, if your choosen nick is already taken
-Copyright 2016, Alexander Sulfrian <alex@spline.inf.fu-berlin.de>
-Licensed under the Eiffel Forum License 2.
-
-http://inamidst.com/phenny/
-"""
-
-import sys
-import threading
-
-
-# Duration to wait before trying to get the nick again (in seconds)
-DEFAULT_NICK_DELAY = 60
-
-
-def _start_nickloop(phenny):
- delay = getattr(phenny.config, 'nick_delay', DEFAULT_NICK_DELAY)
- if not isinstance(delay, int):
- return
-
- def nickloop():
- print >> sys.stderr, ('Trying to get: %s' % phenny.config.nick)
- phenny.write(('NICK', phenny.config.nick))
- threading.Timer(delay, nickloop).start()
-
-
-def _set_nick(wrapper, nick):
- # The phenny argument of the event handler is only a wrapper to enable the
- # reply and say methods. If we try to change the 'nick' attribute directly,
- # the modification is lost. So we need to get the real phenny instance
- # before.
- phenny = wrapper.__getattribute__('bot')
- phenny.nick = nick
-
-
-def _build_nick(phenny):
- # We have different ways to generate an alternativ_nick:
- # * First we try to use the config option.
- # * If it is not set or it does not work, we append an underscore after the
- # default nick.
- # * If even this did not work, we append a number and count upwards until a
- # valid nick is found.
-
- alternativ_nick = getattr(phenny.config, 'alternativ_nick', None)
- if alternativ_nick is not None and phenny.nick != alternativ_nick:
- return alternativ_nick
- else:
- if phenny.data.get('alternativ_nick.count') is not None:
- count = phenny.data['alternativ_nick.count']
- count += 1
- phenny.data['alternativ_nick.count'] = count
- return ('%s_%d' % (phenny.config.nick, count))
- else:
- phenny.data['alternativ_nick.count'] = 0
- return ('%s_' % phenny.config.nick)
-
-
-def nickname_in_use(phenny, input):
- # The nickname in use event can occur during connection phase if the
- # supplied nick is already taken, or if we try to get the default nick and
- # it is still taken. We remember the connection state, to decide what to
- # do.
- if phenny.data.get('alternativ_nick.connected'):
- _start_nickloop(phenny)
- else:
- new_nick = _build_nick(phenny)
- _set_nick(phenny, new_nick)
- phenny.data['alternativ_nick.active'] = True
- phenny.write(('NICK', new_nick))
-nickname_in_use.rule = r'(.*)'
-nickname_in_use.event = '433'
-nickname_in_use.thread = False
-
-
-def nick_change(phenny, input):
- # Monitor the NICK changes to detect, if we change our nick.
- if input.nick == phenny.nick:
- _set_nick(phenny, input)
- print >> sys.stderr, ("Changed nick to: %s" % phenny.nick)
-
- # Trying to identify (just in case it did not work, during startup)
- if hasattr(phenny.config, 'password'):
- phenny.msg('NickServ', 'IDENTIFY %s' % phenny.config.password)
-nick_change.rule = r'(.*)'
-nick_change.event = 'NICK'
-
-
-def connected(phenny, input):
- # The '001' event is the first message after establishing the connection
- # and providing a valid NICK and USER. If we used an alternativ nick, we
- # could start trying to get back the default nick.
- phenny.data['alternativ_nick.connected'] = True
- if phenny.data.get('alternativ_nick.active'):
- _start_nickloop(phenny)
-connected.rule = r'(.*)'
-connected.event = '001'