Pārlūkot izejas kodu

Added scp command

Kirk Trombley 6 gadi atpakaļ
vecāks
revīzija
98525962a4
4 mainītis faili ar 55 papildinājumiem un 4 dzēšanām
  1. 0 1
      TODO_commands
  2. 1 1
      config/config.toml
  3. 2 1
      requirements.txt
  4. 52 1
      src/plugins/querying.py

+ 0 - 1
TODO_commands

@@ -2,7 +2,6 @@ old:
 seychelles
 pokemon
 say
-scp
 digest
 riddle
 

+ 1 - 1
config/config.toml

@@ -5,7 +5,7 @@ simple = [ "info", "isadmin", "debug", "echo", "thanks", "guess", "meme", "unmem
 teamspeak = [ "teamspeak" ]
 session = [ "session" ]
 roll = [ "roll" ]
-querying = [ "inspire", "shield" ]
+querying = [ "inspire", "shield", "scp"]
 
 [teamspeak]
 host = "kirkleon.ddns.net"

+ 2 - 1
requirements.txt

@@ -3,4 +3,5 @@ sqlalchemy
 Flask
 gunicorn
 requests
-dice
+dice
+requests_html

+ 52 - 1
src/plugins/querying.py

@@ -1,6 +1,7 @@
 import requests
+from requests_html import HTMLSession
 
-from command_system import RollbotResponse, RollbotFailure, as_plugin
+from command_system import RollbotResponse, RollbotFailure, as_plugin, pop_arg
 from config import API_KEY
 from util import upload_image
 
@@ -79,3 +80,53 @@ flat\r\n\
             failure_reason=RollbotFailure.SERVICE_DOWN,
             failure_notes=result
         )
+
+
+@as_plugin
+def scp(db, message):
+    number, _ = pop_arg(message.raw_args)
+    try:
+        number = int(number.strip())
+    except ValueError as e:
+        return RollbotResponse(
+            message,
+            failure_reason=RollbotFailure.INVALID_ARGUMENTS,
+            failure_notes={
+                "explain": "Could not parse argument %s into integer." % number,
+                "exception": e,
+            }
+        )
+
+    page_url = "http://www.scp-wiki.net/scp-%03d" % number
+    series_url = "http://www.scp-wiki.net/scp-series"
+    series = (number // 1000) + 1
+    if series != 1:
+        series_url += "-" + str(series)
+
+    sesh = HTMLSession()
+
+    r = sesh.get(page_url)
+    r2 = sesh.get(series_url)
+
+    ps = r.html.find("p")
+    lis = r2.html.find("li")
+
+    object_class = "Error retrieving object class!"
+    for p in ps:
+        if "Object Class" in p.text:
+            object_class = p.text
+            break
+
+    query = "SCP-%03d" % number
+    flavortext = "Error retrieving title!"
+    for li in lis:
+        if query in li.text:
+            flavortext = li.text.split("-", 2)[-1].strip()
+            break
+
+    response = "Item # %d\n" % number
+    response += object_class + "\n"
+    response += flavortext + "\n"
+    response += page_url
+
+    return RollbotResponse(message, txt=response)