Compare commits

..

No commits in common. "6ab86f773c0a8a5a298419629acb37cac3d435d6" and "651399f5fcbc69123541f69f18ad66f7a4196654" have entirely different histories.

6 changed files with 126 additions and 365 deletions

View File

@ -12,14 +12,7 @@ logger = logging.getLogger(__name__)
class History(Plugin): class History(Plugin):
"""Watch the history of IRC channels and try to track what users may have missed.""" """Watch the history of IRC channels and try to track what users may have missed."""
what_missed_regex = r'(?i)(what did I miss\?|did I miss anything\?)$' what_missed_regex = r'what did I miss\?$'
def __init__(self, bot, connection, event):
"""Initialize some tracking stuff."""
super(History, self).__init__(bot, connection, event)
self.channel_history = {}
self.channel_participants = {}
self.channel_leave_points = {}
def start(self): def start(self):
"""Set up the handlers.""" """Set up the handlers."""
@ -32,6 +25,10 @@ class History(Plugin):
self.connection.reactor.add_global_regex_handler(['pubmsg', 'privmsg'], self.what_missed_regex, self.connection.reactor.add_global_regex_handler(['pubmsg', 'privmsg'], self.what_missed_regex,
self.handle_what_missed, 60) self.handle_what_missed, 60)
self.channel_history = {}
self.channel_participants = {}
self.channel_leave_points = {}
super(History, self).start() super(History, self).start()
def stop(self): def stop(self):
@ -112,8 +109,7 @@ class History(Plugin):
history = self._missed_slice(where, who) history = self._missed_slice(where, who)
self._delete_channel_leave_point(where, who) self._delete_channel_leave_point(where, who)
self._send_history(who, history) self._send_history(who, history)
privmsged_str = " (PRIVMSGed)" if history else "" self.bot.reply(event, f"{len(history)} line(s) (PRIVMSGed)")
self.bot.reply(event, f"{len(history)} line(s){privmsged_str}")
return 'NO MORE' return 'NO MORE'
def _send_history(self, who, history): def _send_history(self, who, history):
@ -153,7 +149,7 @@ class History(Plugin):
def _remove_channel_participant(self, where, who): def _remove_channel_participant(self, where, who):
"""Remove the specified who from the where channel's participants list.""" """Remove the specified who from the where channel's participants list."""
participants = self.channel_participants.setdefault(where, set()) participants = self.channel_participants.setdefault(where, set())
participants.discard(who) participants.remove(who)
logger.debug("participants for %s: %s", where, participants) logger.debug("participants for %s: %s", where, participants)

View File

@ -4,221 +4,88 @@
# #
# pip-compile --output-file=requirements/requirements-dev.txt requirements/requirements-dev.in # pip-compile --output-file=requirements/requirements-dev.txt requirements/requirements-dev.in
# #
appdirs==1.4.4 appdirs==1.4.4 # via virtualenv
# via virtualenv asgiref==3.2.10 # via django
asgiref==3.2.10 attrs==20.2.0 # via pytest
# via django bandit==1.6.2 # via -r requirements/requirements-dev.in
attrs==20.2.0 certifi==2020.6.20 # via requests
# via pytest chardet==3.0.4 # via requests
bandit==1.6.2 click==7.1.2 # via pip-tools
# via -r requirements/requirements-dev.in coverage==5.3 # via pytest-cov
certifi==2020.6.20 distlib==0.3.1 # via virtualenv
# via requests django-adminplus==0.5 # via -r requirements/requirements.in
chardet==3.0.4 django-bootstrap3==14.2.0 # via -r requirements/requirements.in
# via requests django-extensions==3.0.9 # via -r requirements/requirements.in
click==8.0.0 django-registration-redux==2.8 # via -r requirements/requirements.in
# via pip-tools django==3.1.2 # via -r requirements/requirements.in, django-bootstrap3, djangorestframework
coverage==5.3 djangorestframework==3.12.1 # via -r requirements/requirements.in
# via pytest-cov dlint==0.10.3 # via -r requirements/requirements-dev.in
distlib==0.3.1 filelock==3.0.12 # via tox, virtualenv
# via virtualenv flake8-blind-except==0.1.1 # via -r requirements/requirements-dev.in
django-adminplus==0.5 flake8-builtins==1.5.3 # via -r requirements/requirements-dev.in
# via -r requirements/requirements.in flake8-docstrings==1.5.0 # via -r requirements/requirements-dev.in
django-bootstrap3==14.2.0 flake8-executable==2.0.4 # via -r requirements/requirements-dev.in
# via -r requirements/requirements.in flake8-fixme==1.1.1 # via -r requirements/requirements-dev.in
django-extensions==3.0.9 flake8-isort==4.0.0 # via -r requirements/requirements-dev.in
# via -r requirements/requirements.in flake8-logging-format==0.6.0 # via -r requirements/requirements-dev.in
django-registration-redux==2.8 flake8-mutable==1.2.0 # via -r requirements/requirements-dev.in
# via -r requirements/requirements.in flake8==3.8.4 # via -r requirements/requirements-dev.in, dlint, flake8-builtins, flake8-docstrings, flake8-executable, flake8-isort, flake8-mutable
django==3.1.2 gitdb==4.0.5 # via gitpython
# via gitpython==3.1.11 # via bandit
# -r requirements/requirements.in idna==2.10 # via requests
# django-bootstrap3 importlib-metadata==1.7.0 # via django-bootstrap3, flake8, inflect, pluggy, pytest, stevedore, tox, virtualenv
# djangorestframework importlib-resources==3.1.1 # via jaraco.text, virtualenv
djangorestframework==3.12.1 inflect==4.1.0 # via jaraco.itertools
# via -r requirements/requirements.in iniconfig==1.1.1 # via pytest
dlint==0.10.3 irc==15.0.6 # via -r requirements/requirements.in
# via -r requirements/requirements-dev.in isort==5.6.4 # via flake8-isort
filelock==3.0.12 jaraco.classes==3.1.0 # via jaraco.collections
# via jaraco.collections==3.0.0 # via irc
# tox jaraco.functools==3.0.1 # via irc, jaraco.text, tempora
# virtualenv jaraco.itertools==5.0.0 # via irc
flake8-blind-except==0.1.1 jaraco.logging==3.0.0 # via irc
# via -r requirements/requirements-dev.in jaraco.stream==3.0.0 # via irc
flake8-builtins==1.5.3 jaraco.text==3.2.0 # via irc, jaraco.collections
# via -r requirements/requirements-dev.in mccabe==0.6.1 # via flake8
flake8-docstrings==1.5.0 more-itertools==8.5.0 # via irc, jaraco.classes, jaraco.functools, jaraco.itertools
# via -r requirements/requirements-dev.in oauthlib==3.1.0 # via requests-oauthlib
flake8-executable==2.0.4 packaging==20.4 # via pytest, tox
# via -r requirements/requirements-dev.in parsedatetime==2.6 # via -r requirements/requirements.in
flake8-fixme==1.1.1 pbr==5.5.1 # via stevedore
# via -r requirements/requirements-dev.in pip-tools==5.3.1 # via -r requirements/requirements-dev.in
flake8-isort==4.0.0 pluggy==0.13.1 # via pytest, tox
# via -r requirements/requirements-dev.in ply==3.11 # via -r requirements/requirements.in
flake8-logging-format==0.6.0 py==1.9.0 # via pytest, tox
# via -r requirements/requirements-dev.in pycodestyle==2.6.0 # via flake8
flake8-mutable==1.2.0 pydocstyle==5.1.1 # via flake8-docstrings
# via -r requirements/requirements-dev.in pyflakes==2.2.0 # via flake8
flake8==3.8.4 pyparsing==2.4.7 # via packaging
# via pytest-cov==2.10.1 # via -r requirements/requirements-dev.in
# -r requirements/requirements-dev.in pytest-django==4.1.0 # via -r requirements/requirements-dev.in
# dlint pytest==6.1.1 # via -r requirements/requirements-dev.in, pytest-cov, pytest-django
# flake8-builtins python-dateutil==2.8.1 # via -r requirements/requirements.in
# flake8-docstrings python-gitlab==2.5.0 # via -r requirements/requirements.in
# flake8-executable python-mpd2==1.1.0 # via -r requirements/requirements.in
# flake8-isort pytz==2020.1 # via -r requirements/requirements.in, django, irc, tempora
# flake8-mutable pyyaml==5.3.1 # via bandit
gitdb==4.0.5 requests-oauthlib==1.3.0 # via twython
# via gitpython requests==2.24.0 # via python-gitlab, requests-oauthlib, twython
gitpython==3.1.11 six==1.15.0 # via bandit, irc, jaraco.collections, jaraco.logging, jaraco.text, packaging, pip-tools, python-dateutil, tox, virtualenv
# via bandit smmap==3.0.4 # via gitdb
idna==2.10 snowballstemmer==2.0.0 # via pydocstyle
# via requests sqlparse==0.4.1 # via django
inflect==4.1.0 stevedore==3.2.2 # via bandit
# via jaraco.itertools tempora==4.0.0 # via irc, jaraco.logging
iniconfig==1.1.1 testfixtures==6.15.0 # via flake8-isort
# via pytest toml==0.10.1 # via pytest, tox
irc==15.0.6 tox-wheel==0.5.0 # via -r requirements/requirements-dev.in
# via -r requirements/requirements.in tox==3.20.1 # via -r requirements/requirements-dev.in, tox-wheel
isort==5.6.4 twython==3.8.2 # via -r requirements/requirements.in
# via flake8-isort urllib3==1.25.11 # via requests
jaraco.classes==3.1.0 versioneer==0.18 # via -r requirements/requirements-dev.in
# via jaraco.collections virtualenv==20.0.35 # via tox
jaraco.collections==3.0.0 wheel==0.35.1 # via tox-wheel
# via irc zipp==3.3.2 # via importlib-metadata, importlib-resources
jaraco.functools==3.0.1
# via
# irc
# jaraco.text
# tempora
jaraco.itertools==5.0.0
# via irc
jaraco.logging==3.0.0
# via irc
jaraco.stream==3.0.0
# via irc
jaraco.text==3.2.0
# via
# irc
# jaraco.collections
mccabe==0.6.1
# via flake8
more-itertools==8.5.0
# via
# irc
# jaraco.classes
# jaraco.functools
# jaraco.itertools
oauthlib==3.1.0
# via requests-oauthlib
packaging==20.4
# via
# pytest
# tox
parsedatetime==2.6
# via -r requirements/requirements.in
pbr==5.5.1
# via stevedore
pep517==0.10.0
# via pip-tools
pip-tools==6.1.0
# via -r requirements/requirements-dev.in
pluggy==0.13.1
# via
# pytest
# tox
ply==3.11
# via -r requirements/requirements.in
py==1.9.0
# via
# pytest
# tox
pycodestyle==2.6.0
# via flake8
pydocstyle==5.1.1
# via flake8-docstrings
pyflakes==2.2.0
# via flake8
pyparsing==2.4.7
# via packaging
pytest-cov==2.10.1
# via -r requirements/requirements-dev.in
pytest-django==4.1.0
# via -r requirements/requirements-dev.in
pytest==6.1.1
# via
# -r requirements/requirements-dev.in
# pytest-cov
# pytest-django
python-dateutil==2.8.1
# via -r requirements/requirements.in
python-gitlab==2.5.0
# via -r requirements/requirements.in
python-mpd2==1.1.0
# via -r requirements/requirements.in
pytz==2020.1
# via
# -r requirements/requirements.in
# django
# irc
# tempora
pyyaml==5.3.1
# via bandit
requests-oauthlib==1.3.0
# via twython
requests==2.24.0
# via
# python-gitlab
# requests-oauthlib
# twython
six==1.15.0
# via
# bandit
# irc
# jaraco.collections
# jaraco.logging
# jaraco.text
# packaging
# python-dateutil
# tox
# virtualenv
smmap==3.0.4
# via gitdb
snowballstemmer==2.0.0
# via pydocstyle
sqlparse==0.4.1
# via django
stevedore==3.2.2
# via bandit
tempora==4.0.0
# via
# irc
# jaraco.logging
testfixtures==6.15.0
# via flake8-isort
toml==0.10.1
# via
# pep517
# pytest
# tox
tox-wheel==0.5.0
# via -r requirements/requirements-dev.in
tox==3.20.1
# via
# -r requirements/requirements-dev.in
# tox-wheel
twython==3.8.2
# via -r requirements/requirements.in
urllib3==1.25.11
# via requests
versioneer==0.18
# via -r requirements/requirements-dev.in
virtualenv==20.0.35
# via tox
wheel==0.35.1
# via tox-wheel
zalgo-text==0.6
# via -r requirements/requirements.in
# The following packages are considered to be unsafe in a requirements file: # The following packages are considered to be unsafe in a requirements file:
# pip # pip

View File

@ -12,4 +12,3 @@ python-gitlab # client for the gitlab bot
python-mpd2 # client for mpd python-mpd2 # client for mpd
pytz # timezone awareness pytz # timezone awareness
twython # twitter client twython # twitter client
zalgo-text # zalgoify text

View File

@ -4,98 +4,40 @@
# #
# pip-compile --output-file=requirements/requirements.txt requirements/requirements.in # pip-compile --output-file=requirements/requirements.txt requirements/requirements.in
# #
asgiref==3.2.10 asgiref==3.2.10 # via django
# via django certifi==2020.6.20 # via requests
certifi==2020.6.20 chardet==3.0.4 # via requests
# via requests django-adminplus==0.5 # via -r requirements/requirements.in
chardet==3.0.4 django-bootstrap3==14.2.0 # via -r requirements/requirements.in
# via requests django-extensions==3.0.9 # via -r requirements/requirements.in
django-adminplus==0.5 django-registration-redux==2.8 # via -r requirements/requirements.in
# via -r requirements/requirements.in django==3.1.2 # via -r requirements/requirements.in, django-bootstrap3, djangorestframework
django-bootstrap3==14.2.0 djangorestframework==3.12.1 # via -r requirements/requirements.in
# via -r requirements/requirements.in idna==2.10 # via requests
django-extensions==3.0.9 importlib-metadata==1.7.0 # via django-bootstrap3, inflect
# via -r requirements/requirements.in importlib-resources==3.1.1 # via jaraco.text
django-registration-redux==2.8 inflect==4.1.0 # via jaraco.itertools
# via -r requirements/requirements.in irc==15.0.6 # via -r requirements/requirements.in
django==3.1.2 jaraco.classes==3.1.0 # via jaraco.collections
# via jaraco.collections==3.0.0 # via irc
# -r requirements/requirements.in jaraco.functools==3.0.1 # via irc, jaraco.text, tempora
# django-bootstrap3 jaraco.itertools==5.0.0 # via irc
# djangorestframework jaraco.logging==3.0.0 # via irc
djangorestframework==3.12.1 jaraco.stream==3.0.0 # via irc
# via -r requirements/requirements.in jaraco.text==3.2.0 # via irc, jaraco.collections
idna==2.10 more-itertools==8.5.0 # via irc, jaraco.classes, jaraco.functools, jaraco.itertools
# via requests oauthlib==3.1.0 # via requests-oauthlib
inflect==4.1.0 parsedatetime==2.6 # via -r requirements/requirements.in
# via jaraco.itertools ply==3.11 # via -r requirements/requirements.in
irc==15.0.6 python-dateutil==2.8.1 # via -r requirements/requirements.in
# via -r requirements/requirements.in python-gitlab==2.5.0 # via -r requirements/requirements.in
jaraco.classes==3.1.0 python-mpd2==1.1.0 # via -r requirements/requirements.in
# via jaraco.collections pytz==2020.1 # via -r requirements/requirements.in, django, irc, tempora
jaraco.collections==3.0.0 requests-oauthlib==1.3.0 # via twython
# via irc requests==2.24.0 # via python-gitlab, requests-oauthlib, twython
jaraco.functools==3.0.1 six==1.15.0 # via irc, jaraco.collections, jaraco.logging, jaraco.text, python-dateutil
# via sqlparse==0.4.1 # via django
# irc tempora==4.0.0 # via irc, jaraco.logging
# jaraco.text twython==3.8.2 # via -r requirements/requirements.in
# tempora urllib3==1.25.11 # via requests
jaraco.itertools==5.0.0 zipp==3.3.2 # via importlib-metadata, importlib-resources
# via irc
jaraco.logging==3.0.0
# via irc
jaraco.stream==3.0.0
# via irc
jaraco.text==3.2.0
# via
# irc
# jaraco.collections
more-itertools==8.5.0
# via
# irc
# jaraco.functools
# jaraco.itertools
oauthlib==3.1.0
# via requests-oauthlib
parsedatetime==2.6
# via -r requirements/requirements.in
ply==3.11
# via -r requirements/requirements.in
python-dateutil==2.8.1
# via -r requirements/requirements.in
python-gitlab==2.5.0
# via -r requirements/requirements.in
python-mpd2==1.1.0
# via -r requirements/requirements.in
pytz==2020.1
# via
# -r requirements/requirements.in
# django
# irc
# tempora
requests-oauthlib==1.3.0
# via twython
requests==2.24.0
# via
# python-gitlab
# requests-oauthlib
# twython
six==1.15.0
# via
# irc
# jaraco.collections
# jaraco.logging
# jaraco.text
# python-dateutil
sqlparse==0.4.1
# via django
tempora==4.0.0
# via
# irc
# jaraco.logging
twython==3.8.2
# via -r requirements/requirements.in
urllib3==1.25.11
# via requests
zalgo-text==0.6
# via -r requirements/requirements.in

View File

@ -1 +0,0 @@
"""Various IRC plugins for messing with text."""

View File

@ -1,42 +0,0 @@
"""Turn text into zalgo text."""
import logging
import irc.client
from zalgo_text import zalgo
from ircbot.lib import Plugin
logger = logging.getLogger(__name__)
class Zalgo(Plugin):
"""Zalgoify text on demand."""
zalgo_regex = r'^!zalgo\s+(.*)$'
def start(self):
"""Set up the handlers."""
logger.debug("%s starting up", __name__)
self.connection.reactor.add_global_regex_handler(['pubmsg', 'privmsg'], self.zalgo_regex,
self.zalgofy, 0)
super(Zalgo, self).start()
def stop(self):
"""Tear down handlers."""
logger.debug("%s shutting down", __name__)
self.connection.reactor.remove_global_regex_handler(['pubmsg', 'privmsg'], self.zalgofy)
super(Zalgo, self).stop()
def zalgofy(self, connection, event, match):
"""Turn text into zalgo text."""
who = irc.client.NickMask(event.source).nick
what = match.group(1)
logger.debug("%s requested zelgo text for %s", who, what)
zalgoed = zalgo.zalgo().zalgofy(what)
self.bot.reply(event, f"{zalgoed}")
return 'NO MORE'
plugin = Zalgo