This repository has been archived by the owner on Aug 5, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
3dbadce
commit cf19a8a
Showing
5 changed files
with
145 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
import time | ||
import random | ||
from module.config import config | ||
from mirai import * | ||
from module.logger import log | ||
|
||
adapter = HTTPAdapter(verify_key=config["key"], host=config["hostname"], port=config["post"]) | ||
bot = Mirai(qq=config["QQ"], adapter=adapter) | ||
|
||
|
||
async def say_group(group, msg): | ||
print("[消息]->群:{group}:{msg}".format(group=group, msg=msg)) | ||
time.sleep(random.uniform(1.0, 0.3)) | ||
await bot.send_group_message(group, MessageChain([ | ||
Plain(msg) | ||
])) | ||
|
||
|
||
async def say_group_info(group, msg): | ||
log.info("[消息]->群:{group}:{msg}".format(group=group, msg=msg)) | ||
time.sleep(random.uniform(1.0, 0.3)) | ||
await bot.send_group_message(group, MessageChain([ | ||
Plain(msg) | ||
])) | ||
|
||
|
||
async def say_group_warning(group, msg): | ||
log.warning("[消息]->群:{group}:{msg}".format(group=group, msg=msg)) | ||
time.sleep(random.uniform(1.0, 0.3)) | ||
await bot.send_group_message(group, MessageChain([ | ||
Plain(msg) | ||
])) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
|
||
import sys | ||
import logging | ||
from logging import handlers | ||
import datetime | ||
import os | ||
|
||
# 日志级别关系映射 | ||
level_relations = { | ||
'debug': logging.DEBUG, | ||
'info': logging.INFO, | ||
'warning': logging.WARNING, | ||
'error': logging.ERROR, | ||
'crit': logging.CRITICAL | ||
} | ||
|
||
|
||
logs = os.path.join('logs') | ||
if not os.path.exists(logs): | ||
os.makedirs(logs) | ||
|
||
|
||
def outputlog(filename, level="info"): | ||
# 创建日志对象 | ||
log = logging.getLogger(filename) | ||
# 设置日志级别 | ||
log.setLevel(level_relations.get(level)) | ||
# 日志输出格式 | ||
fmt = logging.Formatter('[{time}] - %(levelname)s: %(message)s'.format(time=datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S'))) | ||
# 输出到控制台 | ||
console_handler = logging.StreamHandler(sys.stdout) | ||
console_handler.setFormatter(fmt) | ||
# 输出到文件 | ||
file_handler = handlers.TimedRotatingFileHandler(filename=filename, when='D', backupCount=1, encoding='utf-8') | ||
file_handler.setFormatter(fmt) | ||
log.addHandler(console_handler) | ||
log.addHandler(file_handler) | ||
return log | ||
|
||
|
||
# 明确指定日志输出的文件路径和日志级别 | ||
log = outputlog('./logs/output.log', 'debug') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,53 +1,54 @@ | ||
# 模块 | ||
from rcon.source import * | ||
from modes.config import * | ||
from module.config import * | ||
from module.logger import log | ||
# 发送群消息 | ||
|
||
|
||
# 服务器执行 | ||
async def server_run(command): | ||
try: | ||
print("[RCON]执行命令:{comm}".format(comm=command)) | ||
log.debug("[RCON]执行命令:{comm}".format(comm=command)) | ||
return await rcon( | ||
command, | ||
host=config["RCON_host"], port=config["RCON_post"], passwd=config["RCON_password"] | ||
) | ||
except: | ||
print("[RCON]发生错误,请检查配置是否出错") | ||
log.error("[RCON]发生错误,请检查配置是否出错") | ||
|
||
|
||
# 添加白名单 | ||
async def whtielist_add(player): | ||
async def whitelist_add(player): | ||
output = await server_run("whitelist add {player}".format(player=player)) | ||
if "Player is already whitelisted" in output: | ||
print("[白名单-add]:该玩家已拥有白名单") | ||
elif "Added" in output: | ||
print("[白名单-add]:已成功给予{player}白名单".format(player=player)) | ||
log.info("[白名单-add]:已成功给予{player}白名单".format(player=player)) | ||
|
||
|
||
# 移除白名单 | ||
async def whtielist_del(player): | ||
async def whitelist_del(player): | ||
output = await server_run("whitelist remove {player}".format(player=player)) | ||
if "Player is not whitelisted" in output: | ||
print("[白名单-del]:该玩家未拥有白名单") | ||
elif "Removed" in output: | ||
print("[白名单-del]:已成功移除{player}白名单".format(player=player)) | ||
log.info("[白名单-del]:已成功移除{player}白名单".format(player=player)) | ||
|
||
|
||
# ban 添加 | ||
async def ban_add(player, reason=None): | ||
await whtielist_del(player) | ||
await whitelist_del(player) | ||
output = await server_run("ban {player} {reason}".format(player=player, reason=reason)) | ||
if "Nothing changed. The player is already banned" in output: | ||
print("[黑名单-add]:该玩家已在黑名单列表") | ||
elif "Banned by" in output: | ||
print("[黑名单-add]:已成功将{player}移入黑名单".format(player=player)) | ||
log.info("[黑名单-add]:已成功将{player}移入黑名单".format(player=player)) | ||
|
||
|
||
# 删除 | ||
async def ban_del(player): | ||
await whtielist_add(player) | ||
output = await server_run("pardon {player}".format(player=player)) | ||
if "Nothing changed. The player isn't banned" in output: | ||
print("[白名单-del]:该玩家未在黑名单内") | ||
elif "Unbanned" in output: | ||
print("[黑名单-del]:已成功移出{player}黑名单".format(player=player)) | ||
log.info("[黑名单-del]:已成功移出{player}黑名单".format(player=player)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
import pymysql | ||
from module.config import config | ||
from module.logger import log | ||
|
||
# 连接数据库 | ||
db = pymysql.connect( | ||
host=config["db_host"], | ||
user=config["db_user"], | ||
password=config["db_password"], | ||
database=config["database"] | ||
) | ||
cursor = db.cursor() | ||
cursor.execute("SELECT VERSION()") | ||
data = cursor.fetchone() | ||
log.debug("数据库版本 : %s " % data) | ||
|
||
async def sql_run(sql=None): | ||
try: | ||
# 执行sql语句 | ||
if sql is not None: | ||
cursor.execute(sql) | ||
# 提交到数据库执行 | ||
db.commit() | ||
log.info("[数据库]命令执行成功~") | ||
except: | ||
# 如果发生错误则回滚 | ||
db.rollback() | ||
log.error("[数据库]数据库发生错误,执行失败") | ||
|
||
# 创建数据表 | ||
if cursor.execute("show tables") != 3: | ||
log.info("数据表不存在,正在尝试创建1/3") | ||
create_table_whitelist = """create table whitelist ( | ||
id float(5) PRIMARY KEY AUTO_INCREMENT, | ||
QQ char(16) UNIQUE not null, | ||
player_name char(16) UNIQUE not null | ||
)""" | ||
log.info("数据表不存在,正在尝试创建2/3") | ||
create_table_wait = """create table wait( | ||
id float(5) PRIMARY KEY AUTO_INCREMENT, | ||
QQ char(16) UNIQUE not null, | ||
player_name char(16) UNIQUE not null, | ||
pass boolean, | ||
pass_info char(50) | ||
)""" | ||
log.info("数据表不存在,正在尝试创建3/3") | ||
create_table_banlist = """create table banlist( | ||
player_name char(16) UNIQUE not null, | ||
reason char(30) | ||
)""" | ||
cursor.execute(create_table_whitelist) | ||
cursor.execute(create_table_wait) | ||
cursor.execute(create_table_banlist) | ||
log.debug("数据表创建完成") |