-
Notifications
You must be signed in to change notification settings - Fork 0
/
seNNpy.py
89 lines (69 loc) · 2.48 KB
/
seNNpy.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
from sys import exit as sysexit
from os.path import abspath
from random import randrange
import re
import argparse
import asyncio
import discord
crit = lambda n: randrange(1, n + 1) == n
def parse_arguments():
parser = argparse.ArgumentParser(
description="seNNpy is the Discord bot of your hot, wet dreams"
)
parser.add_argument(
"--train",
type=int,
action="store",
help="if >1, training for that many epochs before continuing",
)
parser.add_argument(
"--dry",
action="store_true",
dest="dry",
help="if enabled, seNNpy will simply generate text and exit",
)
return parser.parse_args()
async def init_bot(bot_token):
TRIGGER_PATTERN = re.compile("^hey senna((-| )?chan)?", flags=re.I)
client = discord.Client()
@client.event
async def on_ready():
print("seNNpy is online 😎 (as: {0.user})".format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
if re.match(TRIGGER_PATTERN, message.content):
await message.channel.trigger_typing()
response = generate.text("hey {}, ".format(message.author.name), count=512)
response = response.split("\n")
await message.channel.send(response[0])
if message.content.startswith("s!trigger") or (crit(100) and crit(100)):
await message.channel.trigger_typing()
response = generate.text("umm, ".format(message.author.name), count=512)
response = response.split("\n")
await message.channel.send(response[1])
print("Connecting seNNpy with token: {}".format(bot_token))
try:
await client.login(bot_token)
await client.connect()
except:
print("Wellp, that's not good. Goodbye! x.x")
if __name__ == "__main__":
args = parse_arguments()
TOKEN = abspath("./BOT_TOKEN")
with open(TOKEN) as token_file:
TOKEN = token_file.read().strip()
if not TOKEN:
sysexit(
"You fucked up. Try making a Discord bot and placing the token in './BOT_TOKEN', you simple bitch."
)
if args.train:
import modules.training as training
training.run(args.train)
import modules.generate as generate
if args.dry:
sysexit(generate.text("start_string "))
# this initializes TensorFlow, making next calls quicker
generate.text("d")
asyncio.run(init_bot(TOKEN))