mirror of
https://github.com/nonebot/nonebot2.git
synced 2024-09-21 05:12:34 +00:00
✨ add multiple account support for mirai adapter
This commit is contained in:
parent
2c6b41f62c
commit
26f0d66017
@ -133,7 +133,11 @@ pip install nonebot-adapter-mirai
|
|||||||
from nonebot.adapters.mirai import Bot
|
from nonebot.adapters.mirai import Bot
|
||||||
|
|
||||||
nonebot.init()
|
nonebot.init()
|
||||||
nonebot.get_driver().register_adapter('mirai', Bot, qq=12345678) # qq参数需要填在mah中登录的qq
|
nonebot.get_driver().register_adapter('mirai',
|
||||||
|
Bot,
|
||||||
|
qq=12345678)
|
||||||
|
# qq参数需要填在mah中登录的qq, 如果需要多个帐号, 可以填写类似于 [123456,789100] 的数组形式
|
||||||
|
|
||||||
nonebot.load_builtin_plugins() # 加载 nonebot 内置插件
|
nonebot.load_builtin_plugins() # 加载 nonebot 内置插件
|
||||||
nonebot.run()
|
nonebot.run()
|
||||||
```
|
```
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import json
|
import json
|
||||||
|
from functools import partial
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from ipaddress import IPv4Address
|
from ipaddress import IPv4Address
|
||||||
from typing import Any, Dict, List, NoReturn, Optional, Tuple, Union
|
from typing import Any, Dict, List, NoReturn, Optional, Tuple, Union
|
||||||
@ -192,7 +193,7 @@ class Bot(BaseBot):
|
|||||||
def register(cls,
|
def register(cls,
|
||||||
driver: Driver,
|
driver: Driver,
|
||||||
config: "Config",
|
config: "Config",
|
||||||
qq: Optional[int] = None):
|
qq: Optional[Union[int, List[int]]] = None):
|
||||||
cls.mirai_config = MiraiConfig(**config.dict())
|
cls.mirai_config = MiraiConfig(**config.dict())
|
||||||
if (cls.mirai_config.auth_key and cls.mirai_config.host and
|
if (cls.mirai_config.auth_key and cls.mirai_config.host and
|
||||||
cls.mirai_config.port) is None:
|
cls.mirai_config.port) is None:
|
||||||
@ -205,11 +206,12 @@ class Bot(BaseBot):
|
|||||||
f"Current driver {cls.config.driver} don't support forward connections"
|
f"Current driver {cls.config.driver} don't support forward connections"
|
||||||
)
|
)
|
||||||
elif isinstance(driver, ForwardDriver) and qq:
|
elif isinstance(driver, ForwardDriver) and qq:
|
||||||
|
self_ids = [qq] if isinstance(qq, int) else qq
|
||||||
|
|
||||||
async def url_factory():
|
async def url_factory(qq: int):
|
||||||
assert cls.mirai_config.host and cls.mirai_config.port and cls.mirai_config.auth_key
|
assert cls.mirai_config.host and cls.mirai_config.port and cls.mirai_config.auth_key
|
||||||
session = await SessionManager.new(
|
session = await SessionManager.new(
|
||||||
qq, # type: ignore
|
qq,
|
||||||
host=cls.mirai_config.host,
|
host=cls.mirai_config.host,
|
||||||
port=cls.mirai_config.port,
|
port=cls.mirai_config.port,
|
||||||
auth_key=cls.mirai_config.auth_key)
|
auth_key=cls.mirai_config.auth_key)
|
||||||
@ -219,7 +221,9 @@ class Bot(BaseBot):
|
|||||||
url=(f'ws://{cls.mirai_config.host}:{cls.mirai_config.port}'
|
url=(f'ws://{cls.mirai_config.host}:{cls.mirai_config.port}'
|
||||||
f'/all?sessionKey={session.session_key}'))
|
f'/all?sessionKey={session.session_key}'))
|
||||||
|
|
||||||
driver.setup_websocket(url_factory)
|
for self_id in self_ids:
|
||||||
|
driver.setup_websocket(partial(url_factory, qq=self_id))
|
||||||
|
|
||||||
elif isinstance(driver, ReverseDriver):
|
elif isinstance(driver, ReverseDriver):
|
||||||
logger.debug(
|
logger.debug(
|
||||||
'Param "qq" does not set for mirai adapter, use http post instead'
|
'Param "qq" does not set for mirai adapter, use http post instead'
|
||||||
|
Loading…
Reference in New Issue
Block a user