QQ消息

QQ机器人的实现基于NoneBot
NoneBot是一个基于酷Q的python异步QQ机器人框架
酷Q实现了一个无头QQ客户端
所有事件(收到消息、通知等)会通过酷Q的HTTP API插件
NoneBot仅支持python3.6.1+

安装NoneBot pip install nonebot(只能在windows上运行)
在论坛找到最新的酷Q Air https://cqp.cc/b/news
下载酷Q Air图灵版
安装cool-httP-api
https://github.com/richardchien/cool-http-air/releases
下载io.github.richardchien.coolqhttpapi.cpk
放到酷Q Air的app文件夹里
注意如果酷Q启动时报错说插件加载失败,或者系统弹窗提示缺少DLL文件
请参考:https://cqhttp.cc/docs/4.12/#/

QQ机器人实现代码
运行CQA.exe(登陆最好使用小号,防止大号被封)
登录后会有一个悬浮框且在工具栏会有图标
在应用管理中开启HTTP API
配置HTTP API
在data/app/io.github.richardchien.coolqhttpapi/config/下可以看到。一个以登录QQ号命名的.json文件
打开文件找到下面三个配置,修改为
ws_reverse_api_url:‘ws://127.0.0.1:8080/ws/api/’
ws_reverse_event_url:‘ws://127.0.0.1:8080/ws/event/’
use_ws_reverse:true

编写一个主启动程序,保存为main.py文件
import nonebot
if name==‘main’:
nonebot.init()
nonebot.load_builtin_plugins()
nonebot.run(host=‘127.0.0.1’,port=8080)
运行该文件并启动酷Q机器人,python确定已启动

用另一个账号给机器账号发一条指令:/echo 你好,时间 机器人会回一段相同的话:你好,世界

新建一个config.py文件,放在和main.py同一个位置
from nonebot.default_cOnfig import *
SUPERUSERS={123123123} #括号里填账号
创建一个MyBot文件夹,在里面创建一个plugins文件夹,在里面创建一个bot.py文件

修改main.py文件
import nonebot
import config
from os import path
if ‘name’==‘main’:
nonebot.init(config)
nonebot.load_plugins(
path.join(path.dirname(file),‘MyBot’,‘plugins’)
‘MyBot.plugins’
)
nonebot.run(host=‘127.0.0.1’,port=8080)

找到plugins文件夹里的bot.py文件,加入以下内容
import nonebot
bot=nonebot.get_bot()
@bot.on_message(‘private’) #收到私聊消息后
async def_(ctx):
print(ctx)

@bot.on_message(‘group’) #收到群聊消息后
async def_(ctx):
print(ctx)

处理加群信息
from nonebot import on_request,RequestSession
#将函数注册为群请求处理器
@on_request(‘group’)
async def_(session:RequestSession):
#验证消息是否符合要求
if session.ctx[‘comment’]==‘暗号’:
#验证消息正确,同意入群
await session.approve()
return
#验证消息错误,拒绝入群
await session.reject(‘请说暗号’)

接受新人入群消息
from nonebot import on_notice,NoticeSession
#将函数注册为群成员增加处理器
@on_notice(‘group_increase’)
async def_(session:NoticeSession):
print(‘有新人来了’)

发送私聊消息
@bot.on_message(‘private’)
async def_(ctx):
msg=ctx[‘raw_message’]
user_id=ctx[‘user_id’]
await bot.send_private_msg(user_id=userQQ,message=msg)
#bot.send_private_msg(user_id=对方rQQ,message=具体消息)

发送群聊消息
@bot.on_message(‘group’)
async def_(ctx):
user_id=ctx[‘user_id’]
if user_id==233333
group_id=cxt[‘group_id’]
await bot.send_group_msg(group_id=groupQQ,message=‘WHO’)
#bot.send_group_msg(group_id=群号,message=具体消息)

欢迎新成员(对于有session的,可以直接session.send())
@on_notice(‘group_increase’)
async def_(session:NoticeSession):
await session.send(‘Welcome’)

发布群公告
bot._send_group_notice(group_id=群号,title=群公告标题,content=群公告内容)

群组设置禁言
@bot.on_message(‘group’)
async def_(ctx):
msg=ctx[‘raw_message’]
if ‘xxx’ in msg:
group_id=ctx[‘group_id’]
user_id=ctx[‘user_id’]
await bot.set_group_ban(group_id=groupQQ,user_id=userQQ,duration=15*60)
#bot.set_group_ban(group_id=群号,user_id=QQ号,duration=以秒为单位的禁言时间)

群组踢人
bot.set_group_kick(group_id=groupQQ,user_id=userQQ,reject_add_request=True)
#bot.set_group_kick(group_id=群号,user_id=要踢的QQ号)
#reject_add_request=是否不允许再加群

学习链接:https://www.bilibili.com/video/BV197411f7Rp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值