Archived
1
0
Fork 0
This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
akari-bot/core/bots/graia/bot.py
2021-08-07 15:56:48 +08:00

56 lines
2 KiB
Python

import asyncio
from graia.application.event.mirai import NewFriendRequestEvent, BotInvitedJoinGroupRequestEvent
from graia.application.friend import Friend
from graia.application.group import Group, Member
from graia.application.message.chain import MessageChain
from config import Config
from core.bots.graia.broadcast import bcc, app
from core.bots.graia.message import MessageSession, FetchTarget
from core.elements import MsgInfo, Session, Module
from core.loader import Modules
from core.parser.message import parser
from core.scheduler import Scheduler
@bcc.receiver('GroupMessage')
async def group_message_handler(message: MessageChain, group: Group, member: Member):
msg = MessageSession(
target=MsgInfo(targetId=f"QQ|Group|{group.id}", senderId=f'QQ|{member.id}', senderName=member.name,
targetFrom='QQ|Group', senderFrom="QQ"),
session=Session(message=message, target=group, sender=member))
await parser(msg)
@bcc.receiver('FriendMessage')
async def friend_message_handler(message: MessageChain, friend: Friend):
msg = MessageSession(
target=MsgInfo(targetId=f"QQ|{friend.id}", senderId=f'QQ|{friend.id}', senderName=friend.nickname,
targetFrom='QQ', senderFrom='QQ'),
session=Session(message=message, target=friend, sender=friend))
await parser(msg)
@bcc.receiver("NewFriendRequestEvent")
async def new_friend(event: NewFriendRequestEvent):
await event.accept()
@bcc.receiver("BotInvitedJoinGroupRequestEvent")
async def new_group(event: BotInvitedJoinGroupRequestEvent):
await event.accept()
@bcc.receiver('ApplicationLaunched')
async def autorun_handler():
gather_list = []
for x in Modules:
if isinstance(Modules[x], Module) and Modules[x].autorun:
gather_list.append(asyncio.ensure_future(Modules[x].function(FetchTarget)))
await asyncio.gather(*gather_list)
Scheduler.start()
if Config('qq_host') and Config('qq_account'):
app.launch_blocking()