mirror of
https://github.com/SpiceBot/SpiceBot.git
synced 2026-11-12 14:39:54 -05:00
test
This commit is contained in:
parent
a2f8a84a31
commit
ea4d4ee6dd
@ -11,11 +11,13 @@ from sopel.db import SopelDB, _deserialize
|
|||||||
|
|
||||||
from .Config import config as botconfig
|
from .Config import config as botconfig
|
||||||
|
|
||||||
from sqlalchemy import Column, String, ForeignKey, Integer, Text
|
from sqlalchemy import Column, String, ForeignKey, Integer, Text, create_engine
|
||||||
from sqlalchemy.ext.declarative import declarative_base
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
from sqlalchemy.exc import SQLAlchemyError
|
from sqlalchemy.exc import SQLAlchemyError
|
||||||
|
from sqlalchemy.engine.url import URL
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
BASE = declarative_base()
|
BASE = declarative_base()
|
||||||
@ -47,7 +49,7 @@ class NickValues(BASE):
|
|||||||
nick_id = Column(Integer, ForeignKey('nick_ids.nick_id'), primary_key=True)
|
nick_id = Column(Integer, ForeignKey('nick_ids.nick_id'), primary_key=True)
|
||||||
namespace = Column(String(255), primary_key=True)
|
namespace = Column(String(255), primary_key=True)
|
||||||
key = Column(String(255), primary_key=True)
|
key = Column(String(255), primary_key=True)
|
||||||
value = Column(Text())
|
value = Column(Text(), convert_unicode=True)
|
||||||
|
|
||||||
|
|
||||||
class ChannelValues(BASE):
|
class ChannelValues(BASE):
|
||||||
@ -58,7 +60,7 @@ class ChannelValues(BASE):
|
|||||||
channel = Column(String(255), primary_key=True)
|
channel = Column(String(255), primary_key=True)
|
||||||
namespace = Column(String(255), primary_key=True)
|
namespace = Column(String(255), primary_key=True)
|
||||||
key = Column(String(255), primary_key=True)
|
key = Column(String(255), primary_key=True)
|
||||||
value = Column(Text())
|
value = Column(Text(), convert_unicode=True)
|
||||||
|
|
||||||
|
|
||||||
class PluginValues(BASE):
|
class PluginValues(BASE):
|
||||||
@ -69,7 +71,7 @@ class PluginValues(BASE):
|
|||||||
plugin = Column(String(255), primary_key=True)
|
plugin = Column(String(255), primary_key=True)
|
||||||
namespace = Column(String(255), primary_key=True)
|
namespace = Column(String(255), primary_key=True)
|
||||||
key = Column(String(255), primary_key=True)
|
key = Column(String(255), primary_key=True)
|
||||||
value = Column(Text())
|
value = Column(Text(), convert_unicode=True)
|
||||||
|
|
||||||
|
|
||||||
class SpiceDB(object):
|
class SpiceDB(object):
|
||||||
@ -496,6 +498,55 @@ class BotDatabase():
|
|||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
||||||
|
# patch unicode issues
|
||||||
|
# MySQL - mysql://username:password@localhost/db
|
||||||
|
# SQLite - sqlite:////home/sopel/.sopel/default.db
|
||||||
|
db_type = botconfig.config.core.db_type
|
||||||
|
|
||||||
|
# Handle SQLite explicitly as a default
|
||||||
|
if db_type == 'sqlite':
|
||||||
|
path = botconfig.config.core.db_filename
|
||||||
|
config_dir, config_file = os.path.split(botconfig.config.filename)
|
||||||
|
config_name, _ = os.path.splitext(config_file)
|
||||||
|
if path is None:
|
||||||
|
path = os.path.join(config_dir, config_name + '.db')
|
||||||
|
path = os.path.expanduser(path)
|
||||||
|
if not os.path.isabs(path):
|
||||||
|
path = os.path.normpath(os.path.join(config_dir, path))
|
||||||
|
SopelDB.filename = path
|
||||||
|
SopelDB.url = 'sqlite:///%s' % path
|
||||||
|
# Otherwise, handle all other database engines
|
||||||
|
else:
|
||||||
|
if db_type == 'mysql':
|
||||||
|
drivername = botconfig.config.core.db_driver or 'mysql'
|
||||||
|
elif db_type == 'postgres':
|
||||||
|
drivername = botconfig.config.core.db_driver or 'postgresql'
|
||||||
|
elif db_type == 'oracle':
|
||||||
|
drivername = botconfig.config.core.db_driver or 'oracle'
|
||||||
|
elif db_type == 'mssql':
|
||||||
|
drivername = botconfig.config.core.db_driver or 'mssql+pymssql'
|
||||||
|
elif db_type == 'firebird':
|
||||||
|
drivername = botconfig.config.core.db_driver or 'firebird+fdb'
|
||||||
|
elif db_type == 'sybase':
|
||||||
|
drivername = botconfig.config.core.db_driver or 'sybase+pysybase'
|
||||||
|
else:
|
||||||
|
raise Exception('Unknown db_type')
|
||||||
|
|
||||||
|
db_user = botconfig.config.core.db_user
|
||||||
|
db_pass = botconfig.config.core.db_pass
|
||||||
|
db_host = botconfig.config.core.db_host
|
||||||
|
db_port = botconfig.config.core.db_port # Optional
|
||||||
|
db_name = botconfig.config.core.db_name # Optional, depending on DB
|
||||||
|
|
||||||
|
# Ensure we have all our variables defined
|
||||||
|
if db_user is None or db_pass is None or db_host is None:
|
||||||
|
raise Exception('Please make sure the following core '
|
||||||
|
'configuration values are defined: '
|
||||||
|
'db_user, db_pass, db_host')
|
||||||
|
SopelDB.url = URL(drivername=drivername, username=db_user, password=db_pass,
|
||||||
|
host=db_host, port=db_port, database=db_name, query={'charset': 'utf8'})
|
||||||
|
SopelDB.engine = create_engine(SopelDB.url, encoding='utf-8', convert_unicode=True)
|
||||||
|
|
||||||
sopel.db.NickValues = NickValues
|
sopel.db.NickValues = NickValues
|
||||||
SopelDB.get_nick_value = SpiceDB.get_nick_value
|
SopelDB.get_nick_value = SpiceDB.get_nick_value
|
||||||
SopelDB.set_nick_value = SpiceDB.set_nick_value
|
SopelDB.set_nick_value = SpiceDB.set_nick_value
|
||||||
|
|||||||
@ -21,7 +21,7 @@ def bot_command_rule(bot, trigger):
|
|||||||
if not len(trigger.args):
|
if not len(trigger.args):
|
||||||
return
|
return
|
||||||
|
|
||||||
message = str(trigger.args[1]).encode('utf-8').decode('utf-8')
|
message = str(trigger.args[1], 'utf-8')
|
||||||
|
|
||||||
# ignore text coming from a valid prefix
|
# ignore text coming from a valid prefix
|
||||||
if str(message).startswith(tuple(bot.config.core.prefix_list)):
|
if str(message).startswith(tuple(bot.config.core.prefix_list)):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user