Compare commits
6 Commits
651399f5fc
...
6ab86f773c
Author | SHA1 | Date |
---|---|---|
Brian S. Stephan | 6ab86f773c | |
Brian S. Stephan | 3d5e6754e8 | |
Brian S. Stephan | ab1d3456ad | |
Brian S. Stephan | a550bf07ac | |
Brian S. Stephan | 3fe0a8e59e | |
Brian S. Stephan | 0ccb49e7ed |
|
@ -12,7 +12,14 @@ logger = logging.getLogger(__name__)
|
|||
class History(Plugin):
|
||||
"""Watch the history of IRC channels and try to track what users may have missed."""
|
||||
|
||||
what_missed_regex = r'what did I miss\?$'
|
||||
what_missed_regex = r'(?i)(what did I miss\?|did I miss anything\?)$'
|
||||
|
||||
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):
|
||||
"""Set up the handlers."""
|
||||
|
@ -25,10 +32,6 @@ class History(Plugin):
|
|||
self.connection.reactor.add_global_regex_handler(['pubmsg', 'privmsg'], self.what_missed_regex,
|
||||
self.handle_what_missed, 60)
|
||||
|
||||
self.channel_history = {}
|
||||
self.channel_participants = {}
|
||||
self.channel_leave_points = {}
|
||||
|
||||
super(History, self).start()
|
||||
|
||||
def stop(self):
|
||||
|
@ -109,7 +112,8 @@ class History(Plugin):
|
|||
history = self._missed_slice(where, who)
|
||||
self._delete_channel_leave_point(where, who)
|
||||
self._send_history(who, history)
|
||||
self.bot.reply(event, f"{len(history)} line(s) (PRIVMSGed)")
|
||||
privmsged_str = " (PRIVMSGed)" if history else ""
|
||||
self.bot.reply(event, f"{len(history)} line(s){privmsged_str}")
|
||||
return 'NO MORE'
|
||||
|
||||
def _send_history(self, who, history):
|
||||
|
@ -149,7 +153,7 @@ class History(Plugin):
|
|||
def _remove_channel_participant(self, where, who):
|
||||
"""Remove the specified who from the where channel's participants list."""
|
||||
participants = self.channel_participants.setdefault(where, set())
|
||||
participants.remove(who)
|
||||
participants.discard(who)
|
||||
logger.debug("participants for %s: %s", where, participants)
|
||||
|
||||
|
||||
|
|
|
@ -4,88 +4,221 @@
|
|||
#
|
||||
# pip-compile --output-file=requirements/requirements-dev.txt requirements/requirements-dev.in
|
||||
#
|
||||
appdirs==1.4.4 # via virtualenv
|
||||
asgiref==3.2.10 # via django
|
||||
attrs==20.2.0 # via pytest
|
||||
bandit==1.6.2 # via -r requirements/requirements-dev.in
|
||||
certifi==2020.6.20 # via requests
|
||||
chardet==3.0.4 # via requests
|
||||
click==7.1.2 # via pip-tools
|
||||
coverage==5.3 # via pytest-cov
|
||||
distlib==0.3.1 # via virtualenv
|
||||
django-adminplus==0.5 # via -r requirements/requirements.in
|
||||
django-bootstrap3==14.2.0 # via -r requirements/requirements.in
|
||||
django-extensions==3.0.9 # via -r requirements/requirements.in
|
||||
django-registration-redux==2.8 # via -r requirements/requirements.in
|
||||
django==3.1.2 # via -r requirements/requirements.in, django-bootstrap3, djangorestframework
|
||||
djangorestframework==3.12.1 # via -r requirements/requirements.in
|
||||
dlint==0.10.3 # via -r requirements/requirements-dev.in
|
||||
filelock==3.0.12 # via tox, virtualenv
|
||||
flake8-blind-except==0.1.1 # via -r requirements/requirements-dev.in
|
||||
flake8-builtins==1.5.3 # via -r requirements/requirements-dev.in
|
||||
flake8-docstrings==1.5.0 # via -r requirements/requirements-dev.in
|
||||
flake8-executable==2.0.4 # via -r requirements/requirements-dev.in
|
||||
flake8-fixme==1.1.1 # via -r requirements/requirements-dev.in
|
||||
flake8-isort==4.0.0 # via -r requirements/requirements-dev.in
|
||||
flake8-logging-format==0.6.0 # via -r requirements/requirements-dev.in
|
||||
flake8-mutable==1.2.0 # via -r requirements/requirements-dev.in
|
||||
flake8==3.8.4 # via -r requirements/requirements-dev.in, dlint, flake8-builtins, flake8-docstrings, flake8-executable, flake8-isort, flake8-mutable
|
||||
gitdb==4.0.5 # via gitpython
|
||||
gitpython==3.1.11 # via bandit
|
||||
idna==2.10 # via requests
|
||||
importlib-metadata==1.7.0 # via django-bootstrap3, flake8, inflect, pluggy, pytest, stevedore, tox, virtualenv
|
||||
importlib-resources==3.1.1 # via jaraco.text, virtualenv
|
||||
inflect==4.1.0 # via jaraco.itertools
|
||||
iniconfig==1.1.1 # via pytest
|
||||
irc==15.0.6 # via -r requirements/requirements.in
|
||||
isort==5.6.4 # via flake8-isort
|
||||
jaraco.classes==3.1.0 # via jaraco.collections
|
||||
jaraco.collections==3.0.0 # via irc
|
||||
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
|
||||
pip-tools==5.3.1 # 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, pip-tools, 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 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
|
||||
zipp==3.3.2 # via importlib-metadata, importlib-resources
|
||||
appdirs==1.4.4
|
||||
# via virtualenv
|
||||
asgiref==3.2.10
|
||||
# via django
|
||||
attrs==20.2.0
|
||||
# via pytest
|
||||
bandit==1.6.2
|
||||
# via -r requirements/requirements-dev.in
|
||||
certifi==2020.6.20
|
||||
# via requests
|
||||
chardet==3.0.4
|
||||
# via requests
|
||||
click==8.0.0
|
||||
# via pip-tools
|
||||
coverage==5.3
|
||||
# via pytest-cov
|
||||
distlib==0.3.1
|
||||
# via virtualenv
|
||||
django-adminplus==0.5
|
||||
# via -r requirements/requirements.in
|
||||
django-bootstrap3==14.2.0
|
||||
# via -r requirements/requirements.in
|
||||
django-extensions==3.0.9
|
||||
# via -r requirements/requirements.in
|
||||
django-registration-redux==2.8
|
||||
# via -r requirements/requirements.in
|
||||
django==3.1.2
|
||||
# via
|
||||
# -r requirements/requirements.in
|
||||
# django-bootstrap3
|
||||
# djangorestframework
|
||||
djangorestframework==3.12.1
|
||||
# via -r requirements/requirements.in
|
||||
dlint==0.10.3
|
||||
# via -r requirements/requirements-dev.in
|
||||
filelock==3.0.12
|
||||
# via
|
||||
# tox
|
||||
# virtualenv
|
||||
flake8-blind-except==0.1.1
|
||||
# via -r requirements/requirements-dev.in
|
||||
flake8-builtins==1.5.3
|
||||
# via -r requirements/requirements-dev.in
|
||||
flake8-docstrings==1.5.0
|
||||
# via -r requirements/requirements-dev.in
|
||||
flake8-executable==2.0.4
|
||||
# via -r requirements/requirements-dev.in
|
||||
flake8-fixme==1.1.1
|
||||
# via -r requirements/requirements-dev.in
|
||||
flake8-isort==4.0.0
|
||||
# via -r requirements/requirements-dev.in
|
||||
flake8-logging-format==0.6.0
|
||||
# via -r requirements/requirements-dev.in
|
||||
flake8-mutable==1.2.0
|
||||
# via -r requirements/requirements-dev.in
|
||||
flake8==3.8.4
|
||||
# via
|
||||
# -r requirements/requirements-dev.in
|
||||
# dlint
|
||||
# flake8-builtins
|
||||
# flake8-docstrings
|
||||
# flake8-executable
|
||||
# flake8-isort
|
||||
# flake8-mutable
|
||||
gitdb==4.0.5
|
||||
# via gitpython
|
||||
gitpython==3.1.11
|
||||
# via bandit
|
||||
idna==2.10
|
||||
# via requests
|
||||
inflect==4.1.0
|
||||
# via jaraco.itertools
|
||||
iniconfig==1.1.1
|
||||
# via pytest
|
||||
irc==15.0.6
|
||||
# via -r requirements/requirements.in
|
||||
isort==5.6.4
|
||||
# via flake8-isort
|
||||
jaraco.classes==3.1.0
|
||||
# via jaraco.collections
|
||||
jaraco.collections==3.0.0
|
||||
# via irc
|
||||
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:
|
||||
# pip
|
||||
|
|
|
@ -12,3 +12,4 @@ python-gitlab # client for the gitlab bot
|
|||
python-mpd2 # client for mpd
|
||||
pytz # timezone awareness
|
||||
twython # twitter client
|
||||
zalgo-text # zalgoify text
|
||||
|
|
|
@ -4,40 +4,98 @@
|
|||
#
|
||||
# pip-compile --output-file=requirements/requirements.txt requirements/requirements.in
|
||||
#
|
||||
asgiref==3.2.10 # via django
|
||||
certifi==2020.6.20 # via requests
|
||||
chardet==3.0.4 # via requests
|
||||
django-adminplus==0.5 # via -r requirements/requirements.in
|
||||
django-bootstrap3==14.2.0 # via -r requirements/requirements.in
|
||||
django-extensions==3.0.9 # via -r requirements/requirements.in
|
||||
django-registration-redux==2.8 # via -r requirements/requirements.in
|
||||
django==3.1.2 # via -r requirements/requirements.in, django-bootstrap3, djangorestframework
|
||||
djangorestframework==3.12.1 # via -r requirements/requirements.in
|
||||
idna==2.10 # via requests
|
||||
importlib-metadata==1.7.0 # via django-bootstrap3, inflect
|
||||
importlib-resources==3.1.1 # via jaraco.text
|
||||
inflect==4.1.0 # via jaraco.itertools
|
||||
irc==15.0.6 # via -r requirements/requirements.in
|
||||
jaraco.classes==3.1.0 # via jaraco.collections
|
||||
jaraco.collections==3.0.0 # via irc
|
||||
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
|
||||
more-itertools==8.5.0 # via irc, jaraco.classes, 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
|
||||
zipp==3.3.2 # via importlib-metadata, importlib-resources
|
||||
asgiref==3.2.10
|
||||
# via django
|
||||
certifi==2020.6.20
|
||||
# via requests
|
||||
chardet==3.0.4
|
||||
# via requests
|
||||
django-adminplus==0.5
|
||||
# via -r requirements/requirements.in
|
||||
django-bootstrap3==14.2.0
|
||||
# via -r requirements/requirements.in
|
||||
django-extensions==3.0.9
|
||||
# via -r requirements/requirements.in
|
||||
django-registration-redux==2.8
|
||||
# via -r requirements/requirements.in
|
||||
django==3.1.2
|
||||
# via
|
||||
# -r requirements/requirements.in
|
||||
# django-bootstrap3
|
||||
# djangorestframework
|
||||
djangorestframework==3.12.1
|
||||
# via -r requirements/requirements.in
|
||||
idna==2.10
|
||||
# via requests
|
||||
inflect==4.1.0
|
||||
# via jaraco.itertools
|
||||
irc==15.0.6
|
||||
# via -r requirements/requirements.in
|
||||
jaraco.classes==3.1.0
|
||||
# via jaraco.collections
|
||||
jaraco.collections==3.0.0
|
||||
# via irc
|
||||
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
|
||||
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
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
"""Various IRC plugins for messing with text."""
|
|
@ -0,0 +1,42 @@
|
|||
"""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
|
Loading…
Reference in New Issue