summaryrefslogtreecommitdiff
path: root/grabbers
diff options
context:
space:
mode:
authorschneefux <schneefux+git@schneefux.xyz>2018-04-02 22:13:17 +0200
committerschneefux <schneefux+git@schneefux.xyz>2018-04-02 22:13:17 +0200
commit422d30584dfd7d72b62a4feb1094cd87fd7684ca (patch)
treeb3819550e8379f0eb36c6861b7a2c1589f22016a /grabbers
parentd239f542a1de1ee1c74b3fc3e14e5c91385ee3bf (diff)
downloadragequitte-422d30584dfd7d72b62a4feb1094cd87fd7684ca.tar.gz
ragequitte-422d30584dfd7d72b62a4feb1094cd87fd7684ca.zip
first setup of chat crawler & word2vec model
Diffstat (limited to 'grabbers')
-rw-r--r--grabbers/discord_to_redis.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/grabbers/discord_to_redis.py b/grabbers/discord_to_redis.py
new file mode 100644
index 0000000..0b21d26
--- /dev/null
+++ b/grabbers/discord_to_redis.py
@@ -0,0 +1,40 @@
+#!/usr/bin/python3
+
+import discord
+import redis
+import asyncio
+import config
+
+client = discord.Client()
+r = redis.StrictRedis(**{ **config.redis, "decode_responses": True })
+
+"""
+Save a message to redis and store statistics.
+@return True if the message belongs to a channel without known history.
+"""
+def store_message(message):
+ if message.author.bot:
+ return False
+
+ r.set("message:{}".format(message.id), message.content)
+ r.incr("stats:{}:{}:{}".format(message.server.id, message.channel.id, message.author.id))
+ return r.incr("stats:{}:{}".format(message.server.id, message.channel.id)) == 1
+
+
+@client.event
+async def on_message(message):
+ print(message.content)
+
+ fetch_history = store_message(message)
+ if fetch_history:
+ print("+++ fetching channel history +++")
+ try:
+ async for logmsg in client.logs_from(message.channel, before=message, limit=100000):
+ store_message(logmsg)
+ except Exception as e:
+ pass # forbidden, TODO use proper error code
+
+ r.publish("discord_to_redis", "") # notify of new content
+
+
+client.run(*config.discord, bot=False)