2 # tall.bot - a simple Discord Wikipedia bot
14 def wiki_sum(search, sen, pid):
16 logging.info(str(pid) + " | " + str(int(time.time())) + " | " +
18 log_query(search, pid)
19 return "<Wikipedia> " + wikipedia.summary(search,
22 except Exception as e:
23 logging.debug(str(pid) + " | " + str(search) + " | " + str(e))
27 def create_query(inp):
28 key1 = ["What", "what", "who", "Who", "what's", "What's", "whats", "Whats",
30 key2 = ["is", "are", "were", "was"]
31 key3 = ["a", "an", "the"]
34 if x[0] in key1 and x[1] in key2:
44 def tell_more(inp, pid):
46 key1 = ["Tell me more", "tell me more"]
52 def query_lookup(pid):
53 old = int(time.time()) - 150
54 c.execute("SELECT query FROM queries WHERE pid = (?) AND time > (?)",
57 (query, *_) = c.fetchone()
61 return query_lookup(pid)
67 c.execute("""CREATE TABLE IF NOT EXISTS queries(
74 def log_query(search, pid):
75 c.execute("DELETE FROM queries WHERE pid = (?)", (str(pid),))
76 c.execute("""INSERT INTO queries
77 (time, pid, query) VALUES(?, ?, ?)""",
78 (int(time.time()), str(pid), str(search)))
82 class TallBot(discord.Client):
83 async def on_ready(self):
84 logging.info('Logged in as ', self.user)
86 async def on_message(self, message):
87 if message.author == self.user:
90 query = create_query(message.content)
91 more_info = tell_more(message.content, message.author)
93 await message.channel.send(wiki_sum(query, 1, message.author))
95 await message.channel.send(wiki_sum(more_info, 6, message.author))
100 TallBot().run(sys.argv[1])
103 if __name__ == "__main__":
104 conn = sqlite3.connect("queries.db")