feat: 主动聊天功能

This commit is contained in:
ikechan8370 2023-03-05 16:41:38 +08:00
parent 5cbd2cad15
commit 7a320bc772
4 changed files with 114 additions and 2 deletions

68
apps/entertainment.js Normal file
View file

@ -0,0 +1,68 @@
import plugin from '../../../lib/plugins/plugin.js'
import { Config } from '../utils/config.js'
import { generateHello } from '../utils/randomMessage.js'
import { segment } from 'oicq'
import { generateAudio } from '../utils/tts.js'
export class Entertainment extends plugin {
constructor (e) {
super({
name: 'ChatGPT-Plugin娱乐小功能',
dsc: 'ChatGPT-Plugin娱乐小功能',
event: 'message',
priority: 500,
task: [
{
// 每半小时
cron: '*/30 * * * *',
name: 'ChatGPT主动随机说话',
fnc: 'sendRandomMessage'
}
],
rule: [
{
reg: '^#(chatgpt|ChatGPT)打招呼',
fnc: 'sendMessage'
}
]
})
}
async sendMessage (e) {
let groupId = e.msg.replace(/^#(chatgpt|ChatGPT)打招呼/, '')
groupId = parseInt(groupId)
let message = await generateHello()
let sendable = message
logger.info(`打招呼给群聊${groupId}` + message)
if (Config.defaultUseTTS) {
let audio = await generateAudio(message, '随机')
console.log(audio)
sendable = segment.record(audio)
}
if (!groupId) {
await e.reply(sendable)
} else {
await Bot.sendGroupMsg(groupId, sendable)
}
}
async sendRandomMessage () {
let toSend = Config.initiativeChatGroups || []
for (let i = 0; i < toSend.length; i++) {
let groupId = parseInt(toSend[i])
if (Bot.gl[groupId]) {
if (Math.floor(Math.random() * 100) < 10) {
let message = await generateHello()
if (Config.defaultUseTTS) {
let audio = await generateAudio(message, '随机')
await Bot.sendGroupMsg(groupId, segment.record(audio))
} else {
await Bot.sendGroupMsg(groupId, message)
}
}
} else {
logger.warn('机器人不在要发送的群组里,忽略群' + groupId)
}
}
}
}