Giter Club home page Giter Club logo

yirimirai's People

Contributors

pyup-bot avatar rockchinq avatar wybxc avatar xycode-kerman avatar zyckk4 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

yirimirai's Issues

报错:`OtherClientOnlineEvent` 不是 `Event` 的子类

yiri-mirai版本:0.2.4.2(目前pypi的最新版)

控制台会有不少这样的错误消息:

[ERROR][2021-09-11 22:53:48,945][base_events.py][1738] Task exception was never retrieved
future: <Task finished name='Task-22' coro=<Adapter.emit() done, defined at X:\some\path\lib\site-packages\mirai\adapters\base.py:174> exception=ValueError('`OtherClientOnlineEvent` 不是 `Event` 的子类!')>
Traceback (most recent call last):
  File "X:\some\path\lib\site-packages\mirai\adapters\base.py", line 183, in emit
    return sum(await asyncio.gather(*coros), [])
  File "X:\some\path\lib\site-packages\mirai\bus.py", line 187, in emit
    for m_event in self.event_chain_generator(event):
  File "X:\some\path\lib\site-packages\mirai\models\bus.py", line 23, in event_chain_parents
    event_type = Event.get_subtype(event)
  File "X:\some\path\lib\site-packages\mirai\models\base.py", line 90, in get_subtype
    raise ValueError(f'`{name}` 不是 `{cls.__name__}` 的子类!')
ValueError: `OtherClientOnlineEvent` 不是 `Event` 的子类!

看起来在其他客户端登录了bot的QQ时,会出现这个错误。

调用bot.send()报错mirai.exceptions.ApiError: (500, '[ERROR 500]mirai 内部错误。', 'Unsupported image type (mirai) for ExternalResource net.mamoe.mirai.internal.utils.ExternalResourceImplByFile@7b45ee21, considering use gif/png/bmp/jpg format. image header: ')

@bot.on(GroupMessage)
def on_group_message(event: GroupMessage):
    if str(event.message_chain) == '来点涩图':
        setu_response = requests.get(api_setu)
        setu_data = setu_response.json()
        img_url = setu_data['data'][0]['urls']['original']
        print(img_url)
        return bot.send(event, MessageChain([Image(url=img_url), Plain('pid:'+str(setu_data['data'][0]['pid'])+'\n'+'作者:'+str(setu_data['data'][0]['author'])+'\n'+'标题:'+str(setu_data['data'][0]['title']))]))

用户如何自定义异步任务?

翻阅Yiri的源码,发现MiraiRunner类的run方法里有:

try:
    asyncio.run(self._run())
except (KeyboardInterrupt, SystemExit):
    exit()

现在我有一个自己写的异步任务:

async def test():
    while 1:
        print("hello")
        await asyncio.sleep(3)

我该如何加进去?

是挂了吗?提示当前QQ版本过低,请升级至最新版本后再登录。

2022-12-14 03:10:27 E/console: net.mamoe.mirai.network.WrongPasswordException: Error(bot=Bot(xxxxxx), code=235, title=温馨提示, message=当前QQ版本过低,请升级至最新版本后再登录。点击进入下载页面, errorInfo=)
net.mamoe.mirai.network.WrongPasswordException: Error(bot=Bot(xxxxxx), code=235, title=温馨提示, message=当前QQ版本过低,请升级至最新版本后再登录。点击进入下载页面, errorInfo=)
at net.mamoe.mirai.internal.network.components.SsoProcessorImpl$SlowLoginImpl.doLogin(SsoProcessor.kt:311)
at net.mamoe.mirai.internal.network.components.SsoProcessorImpl$SlowLoginImpl$doLogin$1.invokeSuspend(SsoProcessor.kt)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

使用模型事件总线event为str时报错

Python3.7使用自定义模型事件总线时,执行emit报错;
当传入event为str类型时,会调用super()的emit函数,但此时产生问题为ModelEventBus本身并没有在初始化时调用super()的初始化,且没有提供event_chain_generator,导致ModelEventBus对象不存在event_chain_generator属性;

Traceback (most recent call last):
  File "sendmsgEventTest.py", line 143, in thread_listen
    await mbus.emit(event, msgs)
  File "/usr/local/lib/python3.7/dist-packages/mirai/models/bus.py", line 119, in emit
    return await super().emit(event, *args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/mirai/bus.py", line 187, in emit
    for m_event in self.event_chain_generator(event):
AttributeError: 'ModelEventBus' object has no attribute 'event_chain_generator'

触发 ApiError 后退出,偶发:Task exception was never retrieved

Task exception was never retrieved
future: <Task finished name='Task-12' coro=<Mirai.send() done, defined at E:\YiriMiraiProject\YiriMirai\mirai\bot.py:310> exception=ApiError(6, '[ERROR 6]指定文件不存在。', '文件不存在:D:\\mirai\\mc\\test\\..\\test.png')>
Traceback (most recent call last):
  File "E:\YiriMiraiProject\YiriMirai\mirai\bot.py", line 358, in send
    await
  File "E:\YiriMiraiProject\YiriMirai\mirai\models\api.py", line 390, in __call__
    return await self.set(*args, **kwargs)
  File "E:\YiriMiraiProject\YiriMirai\mirai\models\api.py", line 351, in set
    return await self._call_api(
  File "E:\YiriMiraiProject\YiriMirai\mirai\models\api.py", line 328, in _call_api
    raw_response = await self.api_provider.call_api(
  File "E:\YiriMiraiProject\YiriMirai\mirai\bot.py", line 79, in call_api
    return await self._adapter.call_api(api, *args, **kwargs)
  File "E:\YiriMiraiProject\YiriMirai\mirai\adapters\compose.py", line 54, in call_api
    return await self.api_channel.call_api(api, method, **params)
  File "E:\YiriMiraiProject\YiriMirai\mirai\adapters\http.py", line 235, in call_api
    return await self._post(client, f'/{api}', params)
  File "E:\YiriMiraiProject\YiriMirai\mirai\adapters\base.py", line 34, in wrapped
    return await func(self, *args, **kwargs)
  File "E:\YiriMiraiProject\YiriMirai\mirai\adapters\http.py", line 133, in _post
    return _parse_response(response)
  File "E:\YiriMiraiProject\YiriMirai\mirai\adapters\http.py", line 27, in _parse_response
    raise exceptions.ApiError(result)
mirai.exceptions.ApiError: (6, '[ERROR 6]指定文件不存在。', '文件不存在:D:\\mirai\\mc\\test\\..\\test.png')

Face(1) 直接调用报错:AttributeError: __fields_set__

>>> mirai.models.message.Face(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Anaconda3\lib\site-packages\mirai\models\message.py", line 761, in __init__
    self.face_id = args[0]
  File "pydantic\main.py", line 391, in pydantic.main.BaseModel.__setattr__
AttributeError: __fields_set__

区分 Adapter 和 Session

Adapter 和 Session 不分的现状导致了不同的 bot 实例不能复用同一个 adapter,尽管这两个 adapter 的创建参数是相同的。

Initial Update

The bot created this issue to inform you that pyup.io has been set up on this repo.
Once you have closed it, the bot will open pull requests for updates as soon as they are available.

支持 Python 3.10.x

目前的 pyproject.toml 里的 python = ">=3.7, <=3.10" 只允许使用 Python 3.10 而不允许 Python 3.10.1 之类的版本。

是因为用到了 Python 3.10.x 不兼容的特性导致如此设定的吗?

可以使用 python = "^3.7" 来限定任意高于 3.7 的 Python 3 版本。或者若要支持 3.10.x 而不允许 3.11.x 可以使用 python = ">=3.7, <3.11" 来限定版本。

TypeError: As of 3.10, the *loop* parameter was removed from Lock() since it is no longer necessary

  • Python: 3.10.6

INFO: Started server process [1772]
INFO: Waiting for application startup.
2022-08-09 15:47:17 - ERROR As of 3.10, the loop parameter was removed from Lock() since it is no longer necessary
ERROR: Traceback (most recent call last):
File "/usr/lib/python3.10/lib/python3.10/site-packages/starlette/routing.py", line 645, in lifespan
async with self.lifespan_context(app):
File "/usr/lib/python3.10/lib/python3.10/site-packages/starlette/routing.py", line 540, in aenter
await self._router.startup()
File "/usr/lib/python3.10/lib/python3.10/site-packages/starlette/routing.py", line 622, in startup
await handler()
File "/usr/lib/python3.10/lib/python3.10/site-packages/mirai/bot.py", line 226, in startup
await asyncio.gather(*coros)
File "/usr/lib/python3.10/lib/python3.10/site-packages/mirai/bot.py", line 135, in startup
await self._adapter.login(self.qq)
File "/usr/lib/python3.10/lib/python3.10/site-packages/mirai/adapters/base.py", line 35, in wrapped
return await func(self, *args, **kwargs)
File "/usr/lib/python3.10/lib/python3.10/site-packages/mirai/adapters/websocket.py", line 187, in login
self.connection = await connect(self.host_name, extra_headers=headers)
File "/usr/lib/python3.10/lib/python3.10/site-packages/websockets/legacy/client.py", line 622, in await_impl
transport, protocol = await self._create_connection()
File "/usr/lib/python3.10/lib/python3.10/asyncio/base_events.py", line 1089, in create_connection
transport, protocol = await self._create_connection_transport(
File "/usr/lib/python3.10/lib/python3.10/asyncio/base_events.py", line 1107, in _create_connection_transport
protocol = protocol_factory()
File "/usr/lib/python3.10/lib/python3.10/site-packages/websockets/legacy/client.py", line 160, in init
super().init(**kwargs)
File "/usr/lib/python3.10/lib/python3.10/site-packages/websockets/legacy/protocol.py", line 154, in init
self._drain_lock = asyncio.Lock(
File "/usr/lib/python3.10/lib/python3.10/asyncio/locks.py", line 78, in init
super().init(loop=loop)
File "/usr/lib/python3.10/lib/python3.10/asyncio/mixins.py", line 17, in init
raise TypeError(
TypeError: As of 3.10, the loop parameter was removed from Lock() since it is no longer necessary

ERROR: Application startup failed. Exiting.

[Docs Typo] a interesting typo....

@bot.on('FriendMessage')
async def handle_group_message(event: dict):
    print(f"收到来自{event['sender']['nickname']的消息}")

it throws SynatxError.

调用 message_from_id 时报错 ApiError: (500, '[ERROR 500]mirai 内部错误。', 'An unknown field for index -3')

@bot.on(GroupMessage)
    async def on_group_message(event: GroupMessage):
        msg = str(event.message_chain)
        if msg == 'image':
            return bot.send(event, [Image(path='../test.png')])
        if msg == 'voice':
            message_id = await bot.send(event, [Voice(path='../test.silk')])
            await asyncio.sleep(1)
            message_chain = (await bot.message_from_id(message_id)).message_chain # 此处报错
            await message_chain[Voice][0].download('../test_response.silk')

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.