diff options
| author | mogad0n | 2020-09-01 21:34:31 +0530 |
|---|---|---|
| committer | mogad0n | 2020-09-01 21:34:31 +0530 |
| commit | 3d715314746e911129a7960bf8f5244f3ab19cef (patch) | |
| tree | 88c1be702829be333bf2ac95198af51f2a2720fb | |
| download | tripsit-3d715314746e911129a7960bf8f5244f3ab19cef.tar.gz tripsit-3d715314746e911129a7960bf8f5244f3ab19cef.tar.bz2 tripsit-3d715314746e911129a7960bf8f5244f3ab19cef.zip | |
initial commit
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | __init__.py | 71 | ||||
| -rw-r--r-- | config.py | 56 | ||||
| -rw-r--r-- | plugin.py | 113 | ||||
| -rw-r--r-- | test.py | 38 |
6 files changed, 281 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c9b974b --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +__pycache__ +local diff --git a/README.md b/README.md new file mode 100644 index 0000000..034d307 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +Harm-Reduction tools from tripsit's tripbot and the tripsitwiki diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..c2783aa --- /dev/null +++ b/__init__.py @@ -0,0 +1,71 @@ +### +# Copyright (c) 2020, mogad0n +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions, and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions, and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the author of this software nor the name of +# contributors to this software may be used to endorse or promote products +# derived from this software without specific prior written consent. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +### + +""" +Tripsit: Harm-Reduction tools from tripsit's tripbot and the tripsitwiki +""" + +import sys +import supybot +from supybot import world + +# Use this for the version of this plugin. +__version__ = "" + +# XXX Replace this with an appropriate author or supybot.Author instance. +__author__ = supybot.authors.unknown + +# This is a dictionary mapping supybot.Author instances to lists of +# contributions. +__contributors__ = {} + +# This is a url where the most recent plugin package can be downloaded. +__url__ = '' + +from . import config +from . import plugin +if sys.version_info >= (3, 4): + from importlib import reload +else: + from imp import reload +# In case we're being reloaded. +reload(config) +reload(plugin) +# Add more reloads here if you add third-party modules and want them to be +# reloaded when this plugin is reloaded. Don't forget to import them as well! + +if world.testing: + from . import test + +Class = plugin.Class +configure = config.configure + + +# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: diff --git a/config.py b/config.py new file mode 100644 index 0000000..3a802f7 --- /dev/null +++ b/config.py @@ -0,0 +1,56 @@ +### +# Copyright (c) 2020, mogad0n +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions, and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions, and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the author of this software nor the name of +# contributors to this software may be used to endorse or promote products +# derived from this software without specific prior written consent. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +### + +from supybot import conf, registry +try: + from supybot.i18n import PluginInternationalization + _ = PluginInternationalization('Tripsit') +except: + # Placeholder that allows to run the plugin on a bot + # without the i18n module + _ = lambda x: x + + +def configure(advanced): + # This will be called by supybot to configure this module. advanced is + # a bool that specifies whether the user identified themself as an advanced + # user or not. You should effect your configuration by manipulating the + # registry as appropriate. + from supybot.questions import expect, anything, something, yn + conf.registerPlugin('Tripsit', True) + + +Tripsit = conf.registerPlugin('Tripsit') +# This is where your configuration variables (if any) should go. For example: +# conf.registerGlobalValue(Tripsit, 'someConfigVariableName', +# registry.Boolean(False, _("""Help for someConfigVariableName."""))) + + +# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: diff --git a/plugin.py b/plugin.py new file mode 100644 index 0000000..f010800 --- /dev/null +++ b/plugin.py @@ -0,0 +1,113 @@ +### +# Copyright (c) 2020, mogad0n +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions, and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions, and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the author of this software nor the name of +# contributors to this software may be used to endorse or promote products +# derived from this software without specific prior written consent. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +### + +from supybot import utils, plugins, ircutils, callbacks +from supybot.commands import * +import json +import requests +try: + from supybot.i18n import PluginInternationalization + _ = PluginInternationalization('Tripsit') +except ImportError: + # Placeholder that allows to run the plugin on a bot + # without the i18n module + _ = lambda x: x + +URL_DRUG = "http://tripbot.tripsit.me/api/tripsit/getDrug" +URL_COMBO = "http://tripbot.tripsit.me/api/tripsit/getInteraction" +URL_WIKI = "http://drugs.tripsit.me/%s" + +INSUFFLATED = ["Insufflated", "Insufflated-IR", "Insufflated-XR"] + +METHODS = { + "iv": ["IV"], + "shot": ["IV"], + + "im": ["IM"], + + "oral": ["Oral", "Oral-IR", "Oral-XR"], + + "insufflated": INSUFFLATED, + "snorted": INSUFFLATED, + + "smoked": ["Smoked"] +} + +class Tripsit(callbacks.Plugin): + """Harm-Reduction tools from tripsit's tripbot and the tripsitwiki""" + threaded = True + @wrap(['something', optional('something')]) + def drug(self, irc, msg, args, name, category): + """<drug> [<category>] + fetches data on drug from tripsit wiki + """ + category_list = [] + r = requests.get(URL_DRUG, params={f"name": name}).json() + # r = json.loads(utils.web.getUrlContent(URL_DRUG, data={f"name": name})) + if not r['err']: + drug = r["data"][0]["pretty_name"] + properties = r["data"][0]["properties"] + if category == None: + # category_list = list(properties) + for key in properties: + category_list.append(key) + re = ", ".join(category_list) + # re = category_list + irc.reply(re) + else: + if category in properties.keys(): + re = properties[category] + irc.reply(re) + else: + irc.error("Unknown category") + else: + irc.error("unknown drug") + + def combo(self, irc, msg, args, drugA, drugB): + """<drugA> <drugB> + fetches known interaction between the substances provided. + """ + r = requests.get(URL_COMBO, params={f"drugA": drugA, f"drugB": drugB}).json() + if not r["err"] and r["data"][0]: + interaction = r["data"][0] + drug_a = interaction["interactionCategoryA"] + drug_b = interaction["interactionCategoryB"] + interaction_status = interaction["status"] + note = interaction["note"] + re = f"{drug_a} and {drug_b}: {interaction_status}, Note: {note}" + irc.reply(re) + else: + irc.error("Unknown Combo") + combo = wrap(combo, [("something"), ("something")]) + +Class = Tripsit + + +# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: @@ -0,0 +1,38 @@ +### +# Copyright (c) 2020, mogad0n +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions, and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions, and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the author of this software nor the name of +# contributors to this software may be used to endorse or promote products +# derived from this software without specific prior written consent. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +### + +from supybot.test import * + + +class TripsitTestCase(PluginTestCase): + plugins = ('Tripsit',) + + +# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: |
