diff --git a/pgbotlib/commands.py b/pgbotlib/commands.py index e55b2aa..63df18c 100644 --- a/pgbotlib/commands.py +++ b/pgbotlib/commands.py @@ -84,6 +84,8 @@ class Commander: response = 'failure' elif command.startswith('/adduser '): self.__add_user(sender.id, command[9:]) + elif command == '/chat': + response = str(event.message.peer_id) elif command == '/list': response = ', '.join(self.available_tokens) elif command == '/users': diff --git a/populate b/populate new file mode 100755 index 0000000..6710f9d --- /dev/null +++ b/populate @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 +import psycopg +import yaml +import sys + +with open('config.yml', 'r', encoding='UTF-8') as data: + config = yaml.safe_load(data.read()) +with open(config['response_tokens'], 'r', encoding='UTF-8') as data: + valid_tokens = {item for item in yaml.safe_load(data.read())} +with open(sys.argv[1], 'r', encoding='UTF-8') as data: + phrases = yaml.safe_load(data.read()) + +with psycopg.connect(config['db_spec']) as conn: + query_phrases = 'INSERT INTO responses (tokens, response) VALUES (%s, %s)' + with conn.cursor() as cur: + for regexref, responses in phrases.items(): + tokens = set(regexref.split(',')) + if tokens != tokens & valid_tokens: + print(f'{str(tokens)} failed to add!') + continue + token_string = ','.join(sorted(tokens)) + for response in responses: + cur.execute('SAVEPOINT sp1') + try: + cur.execute( query_phrases, (token_string, response)) + except psycopg.errors.UniqueViolation as err: + cur.execute('ROLLBACK TO SAVEPOINT sp1') + # print(err) + continue + cur.execute('RELEASE SAVEPOINT sp1') + conn.commit() + #for item in names: + # usernames = names[item] + # for username in usernames: + # cur.execute('INSERT INTO names (tg_id, name) VALUES (%s, %s)', + # (item, username)) + #conn.commit()