add back something and bugfix
This commit is contained in:
parent
116387aaa8
commit
493aaab4fa
14 changed files with 142 additions and 111 deletions
5
bot.py
5
bot.py
|
@ -10,11 +10,13 @@ from threading import Thread
|
||||||
|
|
||||||
encode = 'UTF-8'
|
encode = 'UTF-8'
|
||||||
|
|
||||||
|
|
||||||
def enqueue_output(out, queue):
|
def enqueue_output(out, queue):
|
||||||
for line in iter(out.readline, b''):
|
for line in iter(out.readline, b''):
|
||||||
queue.put(line)
|
queue.put(line)
|
||||||
out.close()
|
out.close()
|
||||||
|
|
||||||
|
|
||||||
init_bot()
|
init_bot()
|
||||||
|
|
||||||
logging.basicConfig(format="%(msg)s", level=logging.INFO)
|
logging.basicConfig(format="%(msg)s", level=logging.INFO)
|
||||||
|
@ -24,7 +26,8 @@ runlst = []
|
||||||
for x in lst:
|
for x in lst:
|
||||||
bot = f'{botdir}{x}/bot.py'
|
bot = f'{botdir}{x}/bot.py'
|
||||||
if os.path.exists(bot):
|
if os.path.exists(bot):
|
||||||
p = subprocess.Popen(f'python {bot}', shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=os.path.abspath('.'))
|
p = subprocess.Popen(f'python {bot}', shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
|
||||||
|
cwd=os.path.abspath('.'))
|
||||||
runlst.append(p)
|
runlst.append(p)
|
||||||
q = Queue()
|
q = Queue()
|
||||||
threads = []
|
threads = []
|
||||||
|
|
|
@ -11,10 +11,10 @@ from core.elements import MsgInfo, Session, Module
|
||||||
from core.loader import Modules
|
from core.loader import Modules
|
||||||
from core.parser.message import parser
|
from core.parser.message import parser
|
||||||
from core.scheduler import Scheduler
|
from core.scheduler import Scheduler
|
||||||
from core.utils import PrivateAssets
|
from core.utils import PrivateAssets, init, load_prompt
|
||||||
|
|
||||||
PrivateAssets.set(os.path.abspath(os.path.dirname(__file__) + '/assets'))
|
PrivateAssets.set(os.path.abspath(os.path.dirname(__file__) + '/assets'))
|
||||||
|
init()
|
||||||
|
|
||||||
|
|
||||||
@dp.message_handler()
|
@dp.message_handler()
|
||||||
|
@ -40,6 +40,8 @@ async def on_startup(dispatcher):
|
||||||
await asyncio.gather(*gather_list)
|
await asyncio.gather(*gather_list)
|
||||||
Scheduler.start()
|
Scheduler.start()
|
||||||
logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING)
|
logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING)
|
||||||
|
await load_prompt(FetchTarget)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if dp:
|
if dp:
|
||||||
|
|
|
@ -4,7 +4,7 @@ import traceback
|
||||||
|
|
||||||
from core.bots.aiogram.client import dp, bot
|
from core.bots.aiogram.client import dp, bot
|
||||||
from core.bots.aiogram.tasks import MessageTaskManager, FinishedTasks
|
from core.bots.aiogram.tasks import MessageTaskManager, FinishedTasks
|
||||||
from core.elements import Plain, Image, MessageSession as MS, MsgInfo, Session, Voice
|
from core.elements import Plain, Image, MessageSession as MS, MsgInfo, Session, Voice, FetchTarget as FT
|
||||||
from core.elements.others import confirm_command
|
from core.elements.others import confirm_command
|
||||||
from aiogram import types
|
from aiogram import types
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ class MessageSession(MS):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class FetchTarget:
|
class FetchTarget(FT):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
async def fetch_target(targetId):
|
async def fetch_target(targetId):
|
||||||
matchChannel = re.match(r'^(Telegram\|.*?)\|(.*)', targetId)
|
matchChannel = re.match(r'^(Telegram\|.*?)\|(.*)', targetId)
|
||||||
|
|
|
@ -12,9 +12,10 @@ from core.loader import Modules
|
||||||
from core.logger import Logger
|
from core.logger import Logger
|
||||||
from core.parser.message import parser
|
from core.parser.message import parser
|
||||||
from core.scheduler import Scheduler
|
from core.scheduler import Scheduler
|
||||||
from core.utils import PrivateAssets
|
from core.utils import PrivateAssets, init, load_prompt
|
||||||
|
|
||||||
PrivateAssets.set(os.path.abspath(os.path.dirname(__file__) + '/assets'))
|
PrivateAssets.set(os.path.abspath(os.path.dirname(__file__) + '/assets'))
|
||||||
|
init()
|
||||||
|
|
||||||
|
|
||||||
@client.event
|
@client.event
|
||||||
|
@ -27,6 +28,8 @@ async def on_ready():
|
||||||
await asyncio.gather(*gather_list)
|
await asyncio.gather(*gather_list)
|
||||||
Scheduler.start()
|
Scheduler.start()
|
||||||
logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING)
|
logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING)
|
||||||
|
await asyncio.sleep(5)
|
||||||
|
await load_prompt(FetchTarget)
|
||||||
|
|
||||||
|
|
||||||
@client.event
|
@client.event
|
||||||
|
@ -35,12 +38,12 @@ async def on_message(message):
|
||||||
if message.author == client.user:
|
if message.author == client.user:
|
||||||
return
|
return
|
||||||
Logger.info(str(message) + message.content)
|
Logger.info(str(message) + message.content)
|
||||||
target = "DC|Channel"
|
target = "Discord|Channel"
|
||||||
if isinstance(message.channel, discord.DMChannel):
|
if isinstance(message.channel, discord.DMChannel):
|
||||||
target = "DC|DM|Channel"
|
target = "Discord|DM|Channel"
|
||||||
msg = MessageSession(target=MsgInfo(targetId=f"{target}|{message.channel.id}",
|
msg = MessageSession(target=MsgInfo(targetId=f"{target}|{message.channel.id}",
|
||||||
senderId=f"DC|Client|{message.author.id}",
|
senderId=f"Discord|Client|{message.author.id}",
|
||||||
senderName=message.author.name, targetFrom=target, senderFrom="DC|Client"),
|
senderName=message.author.name, targetFrom=target, senderFrom="Discord|Client"),
|
||||||
session=Session(message=message, target=message.channel, sender=message.author))
|
session=Session(message=message, target=message.channel, sender=message.author))
|
||||||
await parser(msg)
|
await parser(msg)
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ import traceback
|
||||||
import discord
|
import discord
|
||||||
|
|
||||||
from core.bots.discord.client import client
|
from core.bots.discord.client import client
|
||||||
from core.elements import Plain, Image, MessageSession as MS, MsgInfo, Session
|
from core.elements import Plain, Image, MessageSession as MS, MsgInfo, Session, FetchTarget as FT
|
||||||
from core.elements.others import confirm_command
|
from core.elements.others import confirm_command
|
||||||
|
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ class MessageSession(MS):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class FetchTarget:
|
class FetchTarget(FT):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
async def fetch_target(targetId):
|
async def fetch_target(targetId):
|
||||||
matchChannel = re.match(r'^(DC\|(?:DM\||)Channel)\|(.*)', targetId)
|
matchChannel = re.match(r'^(DC\|(?:DM\||)Channel)\|(.*)', targetId)
|
||||||
|
|
|
@ -14,9 +14,10 @@ from core.elements import MsgInfo, Session, Module
|
||||||
from core.loader import Modules
|
from core.loader import Modules
|
||||||
from core.parser.message import parser
|
from core.parser.message import parser
|
||||||
from core.scheduler import Scheduler
|
from core.scheduler import Scheduler
|
||||||
from core.utils import PrivateAssets
|
from core.utils import PrivateAssets, init, load_prompt
|
||||||
|
|
||||||
PrivateAssets.set(os.path.abspath(os.path.dirname(__file__) + '/assets'))
|
PrivateAssets.set(os.path.abspath(os.path.dirname(__file__) + '/assets'))
|
||||||
|
init()
|
||||||
|
|
||||||
|
|
||||||
@bcc.receiver('GroupMessage')
|
@bcc.receiver('GroupMessage')
|
||||||
|
@ -56,6 +57,8 @@ async def autorun_handler():
|
||||||
await asyncio.gather(*gather_list)
|
await asyncio.gather(*gather_list)
|
||||||
Scheduler.start()
|
Scheduler.start()
|
||||||
logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING)
|
logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING)
|
||||||
|
await load_prompt(FetchTarget)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if Config('qq_host') and Config('qq_account'):
|
if Config('qq_host') and Config('qq_account'):
|
||||||
|
|
|
@ -9,7 +9,7 @@ from graia.broadcast.interrupt import InterruptControl
|
||||||
from graia.broadcast.interrupt.waiter import Waiter
|
from graia.broadcast.interrupt.waiter import Waiter
|
||||||
|
|
||||||
from core.bots.graia.broadcast import app, bcc
|
from core.bots.graia.broadcast import app, bcc
|
||||||
from core.elements import Plain as BPlain, Image as BImage, Voice as BVoice, MessageSession as MS, MsgInfo, Session
|
from core.elements import Plain as BPlain, Image as BImage, Voice as BVoice, MessageSession as MS, MsgInfo, Session, FetchTarget as FT
|
||||||
from core.elements.others import confirm_command
|
from core.elements.others import confirm_command
|
||||||
from core.utils import slk_converter
|
from core.utils import slk_converter
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ class MessageSession(MS):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class FetchTarget:
|
class FetchTarget(FT):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
async def fetch_target(targetId):
|
async def fetch_target(targetId):
|
||||||
matchTarget = re.match(r'^(QQ\|(?:Group\||))(.*)', targetId)
|
matchTarget = re.match(r'^(QQ\|(?:Group\||))(.*)', targetId)
|
||||||
|
|
|
@ -49,14 +49,14 @@ async def parser(msg: MessageSession):
|
||||||
if module.need_superuser:
|
if module.need_superuser:
|
||||||
if not senderInfo.query.isSuperUser:
|
if not senderInfo.query.isSuperUser:
|
||||||
return await msg.sendMessage('你没有使用该命令的权限。')
|
return await msg.sendMessage('你没有使用该命令的权限。')
|
||||||
if module.need_admin:
|
elif not module.is_base_function:
|
||||||
if not await msg.checkPermission():
|
|
||||||
return await msg.sendMessage('此命令仅能被该群组的管理员所使用,请联系管理员执行此命令。')
|
|
||||||
if not module.is_base_function:
|
|
||||||
check_command_enable = BotDBUtil.Module(msg).check_target_enabled_module(
|
check_command_enable = BotDBUtil.Module(msg).check_target_enabled_module(
|
||||||
command_first_word) # 是否开启模块
|
command_first_word) # 是否开启模块
|
||||||
if not check_command_enable: # 若未开启
|
if not check_command_enable: # 若未开启
|
||||||
return await msg.sendMessage(f'此模块未启用,请发送~enable {command_first_word}启用本模块。')
|
return await msg.sendMessage(f'此模块未启用,请发送~enable {command_first_word}启用本模块。')
|
||||||
|
if module.need_admin:
|
||||||
|
if not await msg.checkPermission():
|
||||||
|
return await msg.sendMessage('此命令仅能被该群组的管理员所使用,请联系管理员执行此命令。')
|
||||||
help_doc = module.help_doc
|
help_doc = module.help_doc
|
||||||
if help_doc is not None:
|
if help_doc is not None:
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -4,11 +4,14 @@ import shutil
|
||||||
import traceback
|
import traceback
|
||||||
import uuid
|
import uuid
|
||||||
from os.path import abspath
|
from os.path import abspath
|
||||||
|
import json
|
||||||
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import filetype as ft
|
import filetype as ft
|
||||||
|
|
||||||
from core.logger import Logger
|
from core.logger import Logger
|
||||||
|
from core.elements import FetchTarget
|
||||||
|
|
||||||
|
|
||||||
class PrivateAssets:
|
class PrivateAssets:
|
||||||
path = ''
|
path = ''
|
||||||
|
@ -20,6 +23,17 @@ class PrivateAssets:
|
||||||
PrivateAssets.path = path
|
PrivateAssets.path = path
|
||||||
|
|
||||||
|
|
||||||
|
def init():
|
||||||
|
version = os.path.abspath(PrivateAssets.path + '/version')
|
||||||
|
write_version = open(version, 'w')
|
||||||
|
write_version.write(os.popen('git rev-parse HEAD', 'r').read()[0:7])
|
||||||
|
write_version.close()
|
||||||
|
tag = os.path.abspath(PrivateAssets.path + '/version_tag')
|
||||||
|
write_tag = open(tag, 'w')
|
||||||
|
write_tag.write(os.popen('git tag -l', 'r').read().split('\n')[-2])
|
||||||
|
write_tag.close()
|
||||||
|
|
||||||
|
|
||||||
async def get_url(url: str, headers=None):
|
async def get_url(url: str, headers=None):
|
||||||
async with aiohttp.ClientSession() as session:
|
async with aiohttp.ClientSession() as session:
|
||||||
async with session.get(url, timeout=aiohttp.ClientTimeout(total=20), headers=headers) as req:
|
async with session.get(url, timeout=aiohttp.ClientTimeout(total=20), headers=headers) as req:
|
||||||
|
@ -53,18 +67,19 @@ async def slk_converter(filepath):
|
||||||
Logger.info('Voice encoded.')
|
Logger.info('Voice encoded.')
|
||||||
return filepath2
|
return filepath2
|
||||||
|
|
||||||
"""
|
|
||||||
async def load_prompt():
|
async def load_prompt(bot: FetchTarget):
|
||||||
|
print(111)
|
||||||
author_cache = os.path.abspath('.cache_restart_author')
|
author_cache = os.path.abspath('.cache_restart_author')
|
||||||
loader_cache = os.path.abspath('.cache_loader')
|
loader_cache = os.path.abspath('.cache_loader')
|
||||||
if os.path.exists(author_cache):
|
if os.path.exists(author_cache):
|
||||||
import json
|
|
||||||
open_author_cache = open(author_cache, 'r')
|
open_author_cache = open(author_cache, 'r')
|
||||||
cache_json = json.loads(open_author_cache.read())
|
author = json.loads(open_author_cache.read())['ID']
|
||||||
open_loader_cache = open(loader_cache, 'r')
|
open_loader_cache = open(loader_cache, 'r')
|
||||||
await sendMessage(cache_json, open_loader_cache.read(), quote=False)
|
m = await bot.fetch_target(author)
|
||||||
|
if m:
|
||||||
|
await m.sendMessage(open_loader_cache.read())
|
||||||
open_loader_cache.close()
|
open_loader_cache.close()
|
||||||
open_author_cache.close()
|
open_author_cache.close()
|
||||||
os.remove(author_cache)
|
os.remove(author_cache)
|
||||||
os.remove(loader_cache)
|
os.remove(loader_cache)
|
||||||
"""
|
|
|
@ -15,9 +15,12 @@ def convert_str_to_list(s: str) -> list:
|
||||||
|
|
||||||
class BotDBUtil:
|
class BotDBUtil:
|
||||||
class Module:
|
class Module:
|
||||||
def __init__(self, msg: MessageSession):
|
def __init__(self, msg: [MessageSession, str]):
|
||||||
self.message = msg
|
if isinstance(msg, MessageSession):
|
||||||
self.query = session.query(EnabledModules).filter_by(targetId=str(msg.target.targetId)).first()
|
self.targetId = str(msg.target.targetId)
|
||||||
|
else:
|
||||||
|
self.targetId = msg
|
||||||
|
self.query = session.query(EnabledModules).filter_by(targetId=self.targetId).first()
|
||||||
self.enable_modules_list = convert_str_to_list(self.query.enabledModules) if self.query is not None else []
|
self.enable_modules_list = convert_str_to_list(self.query.enabledModules) if self.query is not None else []
|
||||||
self.need_insert = True if self.query is None else False
|
self.need_insert = True if self.query is None else False
|
||||||
|
|
||||||
|
@ -34,7 +37,7 @@ class BotDBUtil:
|
||||||
self.enable_modules_list.append(x)
|
self.enable_modules_list.append(x)
|
||||||
value = convert_list_to_str(self.enable_modules_list)
|
value = convert_list_to_str(self.enable_modules_list)
|
||||||
if self.need_insert:
|
if self.need_insert:
|
||||||
table = EnabledModules(targetId=str(self.message.target.targetId),
|
table = EnabledModules(targetId=self.targetId,
|
||||||
enabledModules=value)
|
enabledModules=value)
|
||||||
session.add_all([table])
|
session.add_all([table])
|
||||||
else:
|
else:
|
||||||
|
@ -77,6 +80,8 @@ class BotDBUtil:
|
||||||
def edit(self, column: str, value):
|
def edit(self, column: str, value):
|
||||||
setattr(self.query, column, value)
|
setattr(self.query, column, value)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
session.expire_all()
|
||||||
|
return True
|
||||||
|
|
||||||
def check_TargetAdmin(self, targetId):
|
def check_TargetAdmin(self, targetId):
|
||||||
query = session.query(TargetAdmin).filter_by(senderId=self.senderId, targetId=targetId).first()
|
query = session.query(TargetAdmin).filter_by(senderId=self.senderId, targetId=targetId).first()
|
||||||
|
|
14
init.py
14
init.py
|
@ -1,5 +1,7 @@
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
|
from database import BotDBUtil
|
||||||
|
from config import Config
|
||||||
|
|
||||||
|
|
||||||
def init_bot():
|
def init_bot():
|
||||||
|
@ -10,12 +12,6 @@ def init_bot():
|
||||||
else:
|
else:
|
||||||
os.mkdir(cache_path)
|
os.mkdir(cache_path)
|
||||||
|
|
||||||
version = os.path.abspath('.version')
|
base_superuser = Config('base_superuser')
|
||||||
write_version = open(version, 'w')
|
if base_superuser:
|
||||||
write_version.write(os.popen('git rev-parse HEAD', 'r').read()[0:7])
|
BotDBUtil.SenderInfo(base_superuser).edit('isSuperUser', True)
|
||||||
write_version.close()
|
|
||||||
|
|
||||||
tag = os.path.abspath('.version_tag')
|
|
||||||
write_tag = open(tag, 'w')
|
|
||||||
write_tag.write(os.popen('git tag -l', 'r').read().split('\n')[-2])
|
|
||||||
write_tag.close()
|
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import json
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
import time
|
import time
|
||||||
|
|
||||||
import psutil
|
import psutil
|
||||||
|
|
||||||
from core.elements import MessageSession
|
from core.elements import MessageSession
|
||||||
|
from core.utils import PrivateAssets
|
||||||
from core.loader import ModulesManager
|
from core.loader import ModulesManager
|
||||||
from core.loader.decorator import command
|
from core.loader.decorator import command
|
||||||
from core.parser.command import CommandParser
|
from core.parser.command import CommandParser
|
||||||
|
@ -122,8 +125,8 @@ async def modules_help(msg: MessageSession):
|
||||||
help_doc='~version {查看机器人的版本号}'
|
help_doc='~version {查看机器人的版本号}'
|
||||||
)
|
)
|
||||||
async def bot_version(msg: MessageSession):
|
async def bot_version(msg: MessageSession):
|
||||||
version = os.path.abspath('.version')
|
version = os.path.abspath(PrivateAssets.path + '/version')
|
||||||
tag = os.path.abspath('.version_tag')
|
tag = os.path.abspath(PrivateAssets.path + '/version_tag')
|
||||||
open_version = open(version, 'r')
|
open_version = open(version, 'r')
|
||||||
open_tag = open(tag, 'r')
|
open_tag = open(tag, 'r')
|
||||||
msgs = f'当前运行的代码版本号为:{open_tag.read()}({open_version.read()})'
|
msgs = f'当前运行的代码版本号为:{open_tag.read()}({open_version.read()})'
|
||||||
|
@ -186,3 +189,70 @@ async def config_gu(msg: MessageSession):
|
||||||
if user:
|
if user:
|
||||||
if BotDBUtil.SenderInfo(f"{msg.target.senderFrom}|{user}").remove_TargetAdmin(msg.target.targetId):
|
if BotDBUtil.SenderInfo(f"{msg.target.senderFrom}|{user}").remove_TargetAdmin(msg.target.targetId):
|
||||||
await msg.sendMessage("成功")
|
await msg.sendMessage("成功")
|
||||||
|
|
||||||
|
|
||||||
|
@command('add_su', need_superuser=True, help_doc='add_su <user>')
|
||||||
|
async def add_su(message: MessageSession):
|
||||||
|
user = message.parsed_msg['<user>']
|
||||||
|
print(message.parsed_msg)
|
||||||
|
if user:
|
||||||
|
if BotDBUtil.SenderInfo(user).edit('isSuperUser', True):
|
||||||
|
await message.sendMessage('成功')
|
||||||
|
|
||||||
|
|
||||||
|
@command('del_su', need_superuser=True, help_doc='del_su <user>')
|
||||||
|
async def del_su(message: MessageSession):
|
||||||
|
user = message.parsed_msg['<user>']
|
||||||
|
if user:
|
||||||
|
if BotDBUtil.SenderInfo(user).edit('isSuperUser', False):
|
||||||
|
await message.sendMessage('成功')
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
@command('set_modules', need_superuser=True, help_doc='set_modules <>')
|
||||||
|
async def set_modules(display_msg: dict):
|
||||||
|
...
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
@command('restart', need_superuser=True)
|
||||||
|
async def restart_bot(msg: MessageSession):
|
||||||
|
await msg.sendMessage('你确定吗?')
|
||||||
|
confirm = await msg.waitConfirm()
|
||||||
|
if confirm:
|
||||||
|
update = os.path.abspath('.cache_restart_author')
|
||||||
|
write_version = open(update, 'w')
|
||||||
|
write_version.write(json.dumps({'From': msg.target.targetFrom, 'ID': msg.target.targetId}))
|
||||||
|
write_version.close()
|
||||||
|
await msg.sendMessage('已执行。')
|
||||||
|
python = sys.executable
|
||||||
|
os.execl(python, python, *sys.argv)
|
||||||
|
|
||||||
|
|
||||||
|
@command('update', need_superuser=True)
|
||||||
|
async def update_bot(msg: MessageSession):
|
||||||
|
await msg.sendMessage('你确定吗?')
|
||||||
|
confirm = await msg.waitConfirm()
|
||||||
|
if confirm:
|
||||||
|
result = os.popen('git pull', 'r')
|
||||||
|
await msg.sendMessage(result.read()[:-1])
|
||||||
|
|
||||||
|
|
||||||
|
@command('update&restart', need_superuser=True)
|
||||||
|
async def update_and_restart_bot(msg: MessageSession):
|
||||||
|
await msg.sendMessage('你确定吗?')
|
||||||
|
confirm = await msg.waitConfirm()
|
||||||
|
if confirm:
|
||||||
|
update = os.path.abspath('.cache_restart_author')
|
||||||
|
write_version = open(update, 'w')
|
||||||
|
write_version.write(json.dumps({'From': msg.target.targetFrom, 'ID': msg.target.targetId}))
|
||||||
|
write_version.close()
|
||||||
|
result = os.popen('git pull', 'r')
|
||||||
|
await msg.sendMessage(result.read()[:-1])
|
||||||
|
python = sys.executable
|
||||||
|
os.execl(python, python, *sys.argv)
|
||||||
|
|
||||||
|
|
||||||
|
@command('echo', need_superuser=True, help_doc='echo <display_msg>')
|
||||||
|
async def echo_msg(msg: MessageSession):
|
||||||
|
await msg.sendMessage(msg.parsed_msg['<display_msg>'])
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from core.elements import MessageSession
|
|
||||||
from core.loader.decorator import command
|
|
||||||
from database import BotDBUtil
|
|
||||||
|
|
||||||
|
|
||||||
@command('add_su', need_superuser=True, help_doc='add_su <user>')
|
|
||||||
async def add_su(message: MessageSession):
|
|
||||||
user = message.parsed_msg['<user>']
|
|
||||||
if user:
|
|
||||||
if BotDBUtil.SenderInfo(f'{message.target.senderFrom}|{user}').edit('isSuperUser', True):
|
|
||||||
await message.sendMessage('成功')
|
|
||||||
|
|
||||||
|
|
||||||
@command('del_su', need_superuser=True, help_doc='del_su <user>')
|
|
||||||
async def del_su(message: MessageSession):
|
|
||||||
user = message.parsed_msg['<user>']
|
|
||||||
if user:
|
|
||||||
if BotDBUtil.SenderInfo(f'{message.target.senderFrom}|{user}').edit('isSuperUser', False):
|
|
||||||
await message.sendMessage('成功')
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
@command('set_modules', need_superuser=True, help_doc='set_modules <>')
|
|
||||||
async def set_modules(display_msg: dict):
|
|
||||||
...
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
@command('restart', need_superuser=True)
|
|
||||||
async def restart_bot(msg: MessageSession):
|
|
||||||
await msg.sendMessage('你确定吗?')
|
|
||||||
confirm = await msg.waitConfirm()
|
|
||||||
if confirm:
|
|
||||||
await msg.sendMessage('已执行。')
|
|
||||||
python = sys.executable
|
|
||||||
os.execl(python, python, *sys.argv)
|
|
||||||
|
|
||||||
"""
|
|
||||||
async def update_bot(display_msg: dict):
|
|
||||||
await sendMessage(display_msg, '你确定吗?')
|
|
||||||
confirm = await wait_confirm(display_msg)
|
|
||||||
if confirm:
|
|
||||||
result = os.popen('git pull', 'r')
|
|
||||||
await sendMessage(display_msg, result.read())
|
|
||||||
|
|
||||||
|
|
||||||
async def update_and_restart_bot(display_msg: dict):
|
|
||||||
await sendMessage(display_msg, '你确定吗?')
|
|
||||||
confirm = await wait_confirm(display_msg)
|
|
||||||
if confirm:
|
|
||||||
update = os.path.abspath('.cache_restart_author')
|
|
||||||
write_version = open(update, 'w')
|
|
||||||
write_version.write(json.dumps({'From': display_msg[Target].target_from, 'ID': display_msg[Target].id}))
|
|
||||||
write_version.close()
|
|
||||||
result = os.popen('git pull', 'r')
|
|
||||||
await sendMessage(display_msg, result.read())
|
|
||||||
python = sys.executable
|
|
||||||
os.execl(python, python, *sys.argv)
|
|
||||||
"""
|
|
||||||
|
|
||||||
@command('echo', need_superuser=True, help_doc='echo <display_msg>')
|
|
||||||
async def echo_msg(msg: MessageSession):
|
|
||||||
await msg.sendMessage(msg.parsed_msg['<display_msg>'])
|
|
|
@ -51,7 +51,7 @@ async def mcv_rss(bot: FetchTarget):
|
||||||
Logger.info(f'huh, we find {snapshot}.')
|
Logger.info(f'huh, we find {snapshot}.')
|
||||||
get_target_id = BotDBUtil.Module.get_enabled_this('mcv_rss')
|
get_target_id = BotDBUtil.Module.get_enabled_this('mcv_rss')
|
||||||
for x in get_target_id:
|
for x in get_target_id:
|
||||||
fetch = bot.fetch_target(x)
|
fetch = await bot.fetch_target(x)
|
||||||
if fetch:
|
if fetch:
|
||||||
try:
|
try:
|
||||||
await fetch.sendMessage('启动器已更新' + file['latest']['snapshot'] + '快照。')
|
await fetch.sendMessage('启动器已更新' + file['latest']['snapshot'] + '快照。')
|
||||||
|
|
Reference in a new issue