import json
from datetime import datetime
from pathlib import Path
from typing import Any
import httpx
import pytest
import respx
from nonebot import get_adapter
from nonebot.adapters.onebot.v11 import Adapter, Bot, Message, MessageSegment
from nonebug import App
from pytest_mock import MockerFixture
from respx import MockRouter
from sqlalchemy import delete
from tests.fake import fake_group_message_event_v11
@pytest.fixture
async def app(app: App):
yield app
# 清理数据库
from nonebot_plugin_orm import get_session
from src.plugins.ff14.plugins.ff14_fflogs.data import FFLOGS_DATA
from src.plugins.ff14.plugins.ff14_fflogs.models import User
async with get_session() as session, session.begin():
await session.execute(delete(User))
# 清除缓存的数据
FFLOGS_DATA._data = None
@pytest.fixture
async def fflogs_data(app: App) -> dict[str, Any]:
path = Path(__file__).parent / "fflogs_data.json"
with path.open("r", encoding="utf-8") as f:
data = json.load(f)
return data
@pytest.fixture
async def fflogs_character_rankings(app: App) -> dict[str, Any]:
path = Path(__file__).parent / "fflogs_character_rankings.json"
with path.open("r", encoding="utf-8") as f:
data = json.load(f)
return data
@pytest.fixture
async def fflogs_job_rankings(app: App) -> dict[str, Any]:
path = Path(__file__).parent / "fflogs_job_rankings.json"
with path.open("r", encoding="utf-8") as f:
data = json.load(f)
return data
@pytest.fixture
async def fflogs_job_rankings_empty(app: App) -> dict[str, Any]:
path = Path(__file__).parent / "fflogs_job_rankings_empty.json"
with path.open("r", encoding="utf-8") as f:
data = json.load(f)
return data
async def test_dps_help(app: App, mocker: MockerFixture):
"""测试 FFLOGS,返回帮助的情况"""
from src.plugins.ff14.plugins.ff14_fflogs import (
__plugin_meta__,
fflogs_cmd,
plugin_config,
)
help_msg = f"{__plugin_meta__.name}\n\n{__plugin_meta__.usage}"
mocker.patch.object(plugin_config, "fflogs_token", "test")
async with app.test_matcher(fflogs_cmd) as ctx:
bot = ctx.create_bot(base=Bot)
event = fake_group_message_event_v11(message=Message("/dps"), user_id=10000)
ctx.receive_event(bot, event)
ctx.should_call_send(event, help_msg, True)
ctx.should_finished(fflogs_cmd)
async with app.test_matcher(fflogs_cmd) as ctx:
bot = ctx.create_bot(base=Bot)
event = fake_group_message_event_v11(message=Message("/dps "), user_id=10000)
ctx.receive_event(bot, event)
ctx.should_call_send(event, help_msg, True)
ctx.should_finished(fflogs_cmd)
async with app.test_matcher(fflogs_cmd) as ctx:
bot = ctx.create_bot(base=Bot)
event = fake_group_message_event_v11(
message=Message("/dps test"), user_id=10000
)
ctx.receive_event(bot, event)
ctx.should_call_send(event, help_msg, True)
ctx.should_finished(fflogs_cmd)
async def test_dps_missing_token(app: App):
"""测试 FFLOGS,缺少 Token 的情况"""
from src.plugins.ff14.plugins.ff14_fflogs import fflogs_cmd
async with app.test_matcher(fflogs_cmd) as ctx:
bot = ctx.create_bot(base=Bot)
event = fake_group_message_event_v11(message=Message("/dps me"))
ctx.receive_event(bot, event)
ctx.should_call_send(
event,
"对不起,Token 未设置,无法查询数据。\n请先在 .env 中配置好 Token 后再尝试查询数据。",
True,
)
ctx.should_finished(fflogs_cmd)
async def test_dps_cache(app: App, mocker: MockerFixture):
"""测试 FFLOGS,设置缓存的情况"""
from src.plugins.ff14.plugins.ff14_fflogs import fflogs_cmd, plugin_config
mocker.patch.object(plugin_config, "fflogs_token", "test")
async with app.test_matcher(fflogs_cmd) as ctx:
bot = ctx.create_bot(base=Bot)
event = fake_group_message_event_v11(message=Message("/dps cache list"))
ctx.receive_event(bot, event)
ctx.should_call_send(event, "当前没有缓存副本。", True)
ctx.should_finished(fflogs_cmd)
async with app.test_matcher(fflogs_cmd) as ctx:
bot = ctx.create_bot(base=Bot)
event = fake_group_message_event_v11(message=Message("/dps cache add p1s"))
ctx.receive_event(bot, event)
ctx.should_call_send(event, "已添加副本 p1s。", True)
ctx.should_finished(fflogs_cmd)
async with app.test_matcher(fflogs_cmd) as ctx:
bot = ctx.create_bot(base=Bot)
event = fake_group_message_event_v11(message=Message("/dps cache list"))
ctx.receive_event(bot, event)
ctx.should_call_send(event, "当前缓存的副本有:\np1s", True)
ctx.should_finished(fflogs_cmd)
async with app.test_matcher(fflogs_cmd) as ctx:
bot = ctx.create_bot(base=Bot)
event = fake_group_message_event_v11(message=Message("/dps cache del p2s"))
ctx.receive_event(bot, event)
ctx.should_call_send(event, "没有缓存 p2s,无法删除。", True)
ctx.should_finished(fflogs_cmd)
async with app.test_matcher(fflogs_cmd) as ctx:
bot = ctx.create_bot(base=Bot)
event = fake_group_message_event_v11(message=Message("/dps cache del p1s"))
ctx.receive_event(bot, event)
ctx.should_call_send(event, "已删除副本 p1s。", True)
ctx.should_finished(fflogs_cmd)
async with app.test_matcher(fflogs_cmd) as ctx:
bot = ctx.create_bot(base=Bot)
event = fake_group_message_event_v11(message=Message("/dps cache list"))
ctx.receive_event(bot, event)
ctx.should_call_send(event, "当前没有缓存副本。", True)
ctx.should_finished(fflogs_cmd)
async def test_dps_permission(app: App, mocker: MockerFixture):
"""测试 FFLOGS,没有权限情况"""
from src.plugins.ff14.plugins.ff14_fflogs import fflogs_cmd, plugin_config
mocker.patch.object(plugin_config, "fflogs_token", "test")
async with app.test_matcher(fflogs_cmd) as ctx:
bot = ctx.create_bot(base=Bot)
event = fake_group_message_event_v11(
message=Message("/dps cache del p2s"), user_id=10000
)
ctx.receive_event(bot, event)
ctx.should_call_send(event, "抱歉,你没有权限设置缓存。", True)
ctx.should_finished(fflogs_cmd)
async def test_dps_bind(app: App, mocker: MockerFixture):
"""测试绑定角色"""
from src.plugins.ff14.plugins.ff14_fflogs import fflogs_cmd, plugin_config
mocker.patch.object(plugin_config, "fflogs_token", "test")
# 查询自己的绑定角色
async with app.test_matcher(fflogs_cmd) as ctx:
adapter = get_adapter(Adapter)
bot = ctx.create_bot(base=Bot, adapter=adapter)
event = fake_group_message_event_v11(message=Message("/dps me"))
ctx.receive_event(bot, event)
ctx.should_call_send(
event,
MessageSegment.at(10)
+ "抱歉,你没有绑定最终幻想14的角色。\n请使用\n/dps me 角色名 服务器名\n绑定自己的角色。",
True,
)
ctx.should_finished(fflogs_cmd)
# 查询别人的绑定角色
async with app.test_matcher(fflogs_cmd) as ctx:
adapter = get_adapter(Adapter)
bot = ctx.create_bot(base=Bot, adapter=adapter)
event = fake_group_message_event_v11(
message=Message("/dps" + MessageSegment.at(10))
)
ctx.receive_event(bot, event)
ctx.should_call_send(
event,
MessageSegment.at(10) + "抱歉,该用户没有绑定最终幻想14的角色。",
True,
)
ctx.should_finished(fflogs_cmd)
# 绑定角色
async with app.test_matcher(fflogs_cmd) as ctx:
adapter =
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目说明】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载食用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源介绍】 基于NoneBot2的聊天机器人python源码+使用说明.zip 运行 ```shell # 首先csdn下载代码到本地,解压,重命名不要有中文。 # 安装机器人所需依赖 poetry install # 配置机器人通用配置 vim .env ``` 请先参考 [.env](./.env) 配置项注释中的链接,配置好所需的适配器,同时填写好各种插件的配置。 接下来就可以尝试运行机器人。 ```shell # 初始化数据库 nb orm upgrade # 运行机器人 nb run ```
资源推荐
资源详情
资源评论
收起资源包目录
基于NoneBot2的聊天机器人python源码+使用说明.zip (145个子文件)
Dockerfile 1KB
.editorconfig 341B
.env 3KB
fflogs_job_rankings.json 42KB
nuannuan.json 40KB
netease.json 38KB
fflogs_data.json 12KB
fflogs_data.json 12KB
price_10393.json 6KB
lookup.json 4KB
holidays.json 3KB
3d.json 2KB
holidays.json 2KB
price_search.json 1KB
launch.json 760B
now.json 537B
fflogs_character_rankings.json 507B
price_search_not_found.json 205B
price_10393_not_found.json 179B
fflogs_job_rankings_empty.json 73B
poetry.lock 330KB
CHANGELOG.md 9KB
使用说明.md 2KB
test_fflogs.py 19KB
api.py 13KB
recorder.py 11KB
test_ban.py 9KB
__init__.py 8KB
test_check_in_history.py 7KB
data_source.py 7KB
test_price.py 7KB
test_heweather.py 7KB
__init__.py 7KB
__init__.py 7KB
test_morning.py 6KB
test_history.py 6KB
helpers.py 6KB
check_in_history.py 5KB
test_body_fat.py 5KB
fake.py 5KB
test_weight.py 5KB
test_gate.py 5KB
ab1ae87b93e7_migrate_data.py 4KB
data_source.py 4KB
test_rounds.py 4KB
data_source.py 4KB
test_repeat.py 4KB
check_in_body_fat.py 4KB
test_roll.py 4KB
test_history_admit.py 3KB
ee037c1bb715_migrate_data.py 3KB
test_rank.py 3KB
check_in_weight.py 3KB
test_record.py 3KB
c194c36434db_migrate_data.py 3KB
test_hello.py 3KB
__init__.py 3KB
heweather_api.py 3KB
data_source.py 3KB
41333e58f5eb_init_db.py 3KB
data_source.py 3KB
3d228011e96b_migrate_data.py 3KB
depends.py 3KB
conftest.py 3KB
test_dietary.py 3KB
b67acef6a240_migrate_data.py 3KB
__init__.py 3KB
test_music.py 3KB
5fc001a169eb_migrate_data.py 3KB
test_admit.py 3KB
__init__.py 3KB
test_discharge.py 2KB
test_eorzean.py 2KB
230c28ca1ecb_init_db.py 2KB
__init__.py 2KB
repeat_rule.py 2KB
models.py 2KB
3c6992cc96cf_init_db.py 2KB
__init__.py 2KB
__init__.py 2KB
check_in_dietary.py 2KB
__init__.py 2KB
__init__.py 2KB
test_nuannuan.py 2KB
data_source.py 2KB
__init__.py 2KB
heweather_models.py 2KB
test_rand.py 2KB
eorzean_api.py 2KB
c3c52d7c9d07_init_db.py 2KB
__init__.py 1KB
check_in_fitness.py 1KB
data.py 1KB
test_fitness.py 1KB
bot.py 1KB
models.py 1KB
models.py 1KB
data_source.py 1KB
475c80e93acc_fix_user_id_type.py 1KB
65a94a4a643b_init_db.py 1KB
共 145 条
- 1
- 2
资源评论
- Atomnyu2024-11-09感谢大佬分享的资源,对我启发很大,给了我新的灵感。
.whl
- 粉丝: 3907
- 资源: 4858
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功