Skip to content

Commit

Permalink
v1.2.0
Browse files Browse the repository at this point in the history
增加 cli 启动方式
上传至 PyPI
  • Loading branch information
djkcyl committed Jan 13, 2023
1 parent 292a7ac commit 801f2e4
Show file tree
Hide file tree
Showing 92 changed files with 324 additions and 221 deletions.
13 changes: 12 additions & 1 deletion .github/workflows/prerelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,15 @@ jobs:
platforms: linux/amd64,linux/arm64
push: true
tags:
${{ secrets.DOCKER_USERNAME }}/bbot:dev
${{ secrets.DOCKER_USERNAME }}/bbot:dev

pypi:
name: Upload to PyPI
runs-on: ubuntu-latest
steps:
- name: Prepare environment
uses: actions/checkout@v2
- name: Build and publish to pypi
uses: JRubics/[email protected]
with:
pypi_token: ${{ secrets.PYPI_TOKEN }}
13 changes: 12 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -100,4 +100,15 @@ jobs:
platforms: linux/amd64,linux/arm64
push: true
tags:
${{ secrets.DOCKER_USERNAME }}/bbot:latest
${{ secrets.DOCKER_USERNAME }}/bbot:latest

pypi:
name: Upload to PyPI
runs-on: ubuntu-latest
steps:
- name: Prepare environment
uses: actions/checkout@v2
- name: Build and publish to pypi
uses: JRubics/[email protected]
with:
pypi_token: ${{ secrets.PYPI_TOKEN }}
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ test.py
.vscode/
package
.idea/
static/browser/
**/static/browser/
data/
docker_build
build
venv
nuitka/
nuitka/
dist/
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ RUN --mount=type=tmpfs,target=/var/cache/apt/archives \
--mount=type=tmpfs,target=/tmp \
sed -i 's/main/main non-free/g' /etc/apt/sources.list && \
playwright install --with-deps chromium
COPY . .
COPY ./graiax_bbot .
VOLUME /bbot/data
EXPOSE 6080
CMD ["python", "main.py"]
45 changes: 0 additions & 45 deletions function/__init__.py

This file was deleted.

4 changes: 4 additions & 0 deletions graiax_bbot/__main__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from .cli import main

if __name__ == "__main__":
main()
24 changes: 9 additions & 15 deletions bot.py → graiax_bbot/bot.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import os
import asyncio
import contextlib

from creart import it
from pathlib import Path
Expand All @@ -13,16 +11,16 @@
from graia.amnesia.builtins.memcache import MemcacheService
from graia.ariadne.entry import config, HttpClientConfig, WebsocketClientConfig

from core.log import logger
from website import BotService
from core.bot_config import BotConfig
from utils.fastapi import FastAPIService
from utils.detect_package import is_package
from core.announcement import base_telemetry
from .core.log import logger
from .website import BotService
from .core.bot_config import BotConfig
from .utils.fastapi import FastAPIService
from .utils.detect_package import is_package
from .core.announcement import base_telemetry


os.environ["PLAYWRIGHT_BROWSERS_PATH"] = (
"0" if is_package else Path("static", "browser").as_posix()
"0" if is_package else Path(__file__).parent.joinpath("static", "browser").as_posix()
)
logger.info("BBot is starting...")

Expand Down Expand Up @@ -72,10 +70,6 @@

with saya.module_context():

saya.require("function")
saya.require("graiax_bbot.function")

import function # noqa

with contextlib.suppress(KeyboardInterrupt, asyncio.exceptions.CancelledError):
app.launch_blocking()
logger.info("BBot is shut down.")
from . import function # noqa
19 changes: 19 additions & 0 deletions graiax_bbot/cli/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import click


@click.group()
def main():
pass


@click.command()
def run():
from .bot import run

run()


main.add_command(run)


main.commands["run"].help = "执行此命令运行 BBot"
17 changes: 17 additions & 0 deletions graiax_bbot/cli/bot.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import sys
import asyncio
import contextlib

from loguru import logger

from ..bot import app
from ..core.bot_config import BotConfig


def run():
if BotConfig.master == 123456789 or BotConfig.Mirai.verify_key == "xxxxxxxxx":
logger.critical("请先完成 BBot 配置")
sys.exit(1)
with contextlib.suppress(KeyboardInterrupt, asyncio.exceptions.CancelledError):
app.launch_blocking()
logger.info("BBot is shut down.")
File renamed without changes.
41 changes: 32 additions & 9 deletions core/announcement.py → graiax_bbot/core/announcement.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,28 @@
import contextlib
from pathlib import Path
from loguru import logger
from importlib import metadata

try:
package = metadata.requires("graiax-bbot")
except Exception:
package = None

RAW_TOML = Path(__file__).parent.parent.joinpath("pyproject.toml").read_text(encoding="utf-8")

PROJECT_VERSION = RAW_TOML.split("version = ")[1].split("\n")[0].strip('"')
TOML_PATH = Path(__file__).parent.parent.parent.joinpath("pyproject.toml")

RAW_TOML = TOML_PATH.read_text(encoding="utf-8") if TOML_PATH.exists() else ""

PROJECT_VERSION = (
RAW_TOML.split("version = ")[1].split("\n")[0].strip('"')
if RAW_TOML
else metadata.version("graiax-bbot")
)

ARIADNE_VERSION = (
RAW_TOML.split("version = ")[2].split(", extras")[0].split("\n")[0].strip('"}{^')
(RAW_TOML.split("version = ")[2].split(", extras")[0].split("\n")[0].strip('"}{^'))
if RAW_TOML
else metadata.version("graia-ariadne")
)

BBOT_ASCII_LOGO = rf"""
Expand Down Expand Up @@ -46,13 +60,22 @@ def get_monitored_libs():

def get_dist_map() -> dict[str, str]:
"""获取与项目相关的发行字典"""
monitored_libs = get_monitored_libs()

dist_map: dict[str, str] = {}
for dist in metadata.distributions():
name: str = dist.metadata["Name"]
if name.lower() in monitored_libs.keys():
version: str = dist.version
dist_map[name] = max(version, dist_map.get(name, ""))
if package:
for dist in package:
dist = dist.split()[0].split(";")[0].split("=")[0].split("<")[0].split("[")[0]

with contextlib.suppress(Exception):
dist_map[dist] = metadata.version(dist)
else:
monitored_libs = get_monitored_libs()
for dist in metadata.distributions():
name: str = dist.metadata["Name"]
if name.lower() in monitored_libs.keys():
version: str = dist.version
dist_map[name] = max(version, dist_map.get(name, ""))

return dist_map


Expand Down
18 changes: 17 additions & 1 deletion core/bot_config.py → graiax_bbot/core/bot_config.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import sys
import json
import yaml

Expand Down Expand Up @@ -187,4 +188,19 @@ def ignore_aliases(self, data):
)


BotConfig: _BotConfig = _BotConfig.load(allow_create=True)
def valueerror_output(err: dict):
err_info = []
pos_maxlen = 0
for err_pos, err_msg in err.items():
pos_maxlen = max(pos_maxlen, len(err_pos))
err_info.append([err_pos, err_msg])
logger.critical("以下配置项填写错误: ")
for err in err_info:
logger.critical(f"{err[0].ljust(pos_maxlen)} => {err[1]}")


try:
BotConfig: _BotConfig = _BotConfig.load(allow_create=True)
except ValueError as e:
valueerror_output(_BotConfig.valueerror_parser(e))
sys.exit(1)
File renamed without changes.
2 changes: 1 addition & 1 deletion core/control.py → graiax_bbot/core/control.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from graia.broadcast.builtin.decorators import Depend
from graia.ariadne.model import Member, MemberPerm, Friend

from core.bot_config import BotConfig
from .bot_config import BotConfig


class Permission:
Expand Down
8 changes: 4 additions & 4 deletions core/data.py → graiax_bbot/core/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,18 +101,18 @@ class Meta:


if not DataVersion.select().exists():
logger.warning(f"数据库版本记录不存在,正在创建,当前版本:{data_version}")
logger.info(f"数据库版本记录不存在,正在创建,当前版本:{data_version}")
DataVersion(version=data_version).save()
elif DataVersion.get().version != data_version:
logger.warning(f"数据库版本不匹配,当前当前最新版本:{data_version},正在更新")
logger.info(f"数据库版本不匹配,当前当前最新版本:{data_version},正在更新")
while DataVersion.get().version != data_version:
if DataVersion.get().version == 1:
logger.warning("当前数据版本为 1,正在更新至 2")
logger.info("当前数据版本为 1,正在更新至 2")
# 将 LivePush 表中的 statu 字段改为 status
db.execute_sql("ALTER TABLE live_push RENAME COLUMN statu TO status")
DataVersion.update(version=2).execute()
elif DataVersion.get().version == 2:
logger.warning("当前数据版本为 2,正在更新至 3")
logger.info("当前数据版本为 2,正在更新至 3")
# 在 SubList 表中添加 live_tips 字段,允许为空
db.execute_sql("ALTER TABLE sub_list ADD COLUMN live_tips VARCHAR(255) NULL")
DataVersion.update(version=3).execute()
Expand Down
2 changes: 1 addition & 1 deletion core/group_config.py → graiax_bbot/core/group_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from typing import Union
from graia.ariadne.model import Group

from core.bot_config import BotConfig
from .bot_config import BotConfig


grouplist_file = Path("data/group_list.json")
Expand Down
5 changes: 3 additions & 2 deletions core/log.py → graiax_bbot/core/log.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@
from pathlib import Path
from loguru import logger

from core.bot_config import BotConfig
from utils.detect_package import is_package
from .bot_config import BotConfig

from ..utils.detect_package import is_package

# read log_level and verify
log_level = str(BotConfig.log_level).upper()
Expand Down
File renamed without changes.
45 changes: 45 additions & 0 deletions graiax_bbot/function/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import graiax_bbot.function.command.add_talk
import graiax_bbot.function.command.announcement
import graiax_bbot.function.command.init
import graiax_bbot.function.command.quit_group
import graiax_bbot.function.command.status
import graiax_bbot.function.command.video_resolve
import graiax_bbot.function.command.vive_dynamic
import graiax_bbot.function.command.admin.add
import graiax_bbot.function.command.admin.remove
import graiax_bbot.function.command.configure.atall
import graiax_bbot.function.command.configure.nick
import graiax_bbot.function.command.menu
import graiax_bbot.function.command.subgroup.add_up
import graiax_bbot.function.command.subgroup.add
import graiax_bbot.function.command.subgroup.get_subgroup
import graiax_bbot.function.command.subgroup.remove_up
import graiax_bbot.function.command.subgroup.remove
import graiax_bbot.function.command.up.get_subscribe
import graiax_bbot.function.command.up.subscribe
import graiax_bbot.function.command.up.unsubscribe
import graiax_bbot.function.command.vip.add
import graiax_bbot.function.command.vip.remove
import graiax_bbot.function.command.whitelist.add
import graiax_bbot.function.command.whitelist.close
import graiax_bbot.function.command.whitelist.open
import graiax_bbot.function.command.whitelist.remove
import graiax_bbot.function.command.web_auth
import graiax_bbot.function.event.bot_launch
import graiax_bbot.function.event.exception
import graiax_bbot.function.event.invited_join_group
import graiax_bbot.function.event.join_group
import graiax_bbot.function.event.leave_group
import graiax_bbot.function.event.mute
import graiax_bbot.function.event.offline
import graiax_bbot.function.event.new_friend
import graiax_bbot.function.event.prem_change
import graiax_bbot.function.pusher.init
import graiax_bbot.function.pusher.dynamic
import graiax_bbot.function.pusher.live # noqa

# import function.scheduler.refresh_token # noqa

from loguru import logger

logger.success("[function] 加载完成")
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from graia.ariadne.event.message import GroupMessage
from graia.saya.builtins.broadcast.schema import ListenerSchema

from core.data import add_talk_count
from ...core.data import add_talk_count

channel = Channel.current()

Expand Down
Loading

0 comments on commit 801f2e4

Please sign in to comment.