Skip to content
This repository has been archived by the owner on Aug 5, 2022. It is now read-only.

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
half-nothing committed May 14, 2022
1 parent 3dbadce commit cf19a8a
Show file tree
Hide file tree
Showing 5 changed files with 145 additions and 16 deletions.
32 changes: 32 additions & 0 deletions module/botsendmsg.py
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)
]))
10 changes: 5 additions & 5 deletions module/config.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# 配置文件
import json
from pathlib import Path
from module.logger import log


def New_config():
Expand All @@ -23,14 +24,14 @@ def New_config():
"RCON_host": "127.0.0.1", # RCON地址
"RCON_post": "1337", # RCON端口
}
print("[Bot]正在尝试创建配置文件")
log.debug("[Bot]正在尝试创建配置文件")
try:
with open("config.json", "w") as write_file:
json.dump(config, write_file, indent="\t", sort_keys=True)
except:
print("[Bot]配置文件创建失败")
log.error("[Bot]配置文件创建失败")
else:
print("[Bot]配置文件创建成功")
log.debug("[Bot]配置文件创建成功")


config = Path("config.json")
Expand All @@ -41,8 +42,7 @@ def New_config():
try:
config = json.load(open("config.json", "r"))
except:
print("[Bot]Json文件已损坏,正在尝试重新创建")
log.error("[Bot]Json文件已损坏,正在尝试重新创建")
New_config()
else:
break
print(config["QQ"])
42 changes: 42 additions & 0 deletions module/logger.py
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')
23 changes: 12 additions & 11 deletions module/servertools.py
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))
54 changes: 54 additions & 0 deletions module/sqlrelated.py
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("数据表创建完成")

0 comments on commit cf19a8a

Please sign in to comment.