Bot在已经有群主身份的情况下kickGuildMember提示机器人权限不足(OneBot)

如题,日志:


代码:

import { Context, Schema } from 'koishi'

export const name = 'simple-kick'

export interface Config {}

export const Config: Schema<Config> = Schema.object({})

export function apply(ctx: Context) {
  ctx.command('kick <bot:user>', '踢出用户', { authority: 4 })
    .option('permanent', '-p')
    .action(async ({ session, options }) => {
      ctx.logger('simple-kick').info(`kicking ${session.selfId}`)
      if (options.permanent) {
        await session.bot.kickGuildMember(session.guildId, session.selfId, true)
      } else {
        await session.bot.kickGuildMember(session.guildId, session.selfId, false)
      }
      return `已踢出 ${session.selfId}`
    })
}

以及同样的代码在telegram中的错误:

2 个赞

selfId?

2 个赞

@itzdrli ,您在kick自己嘛(
设置了参数,但是好像只接受了 _ (argv)中的session, options,没有接受 @ 的人(bot: user)。
session.selfId是bot(接受指令的账号)自己。
.action(中花括号右边加一个,bot,将所有session.selfId替换为bot,再逝世(

4 个赞

emm好像还是有问题

import { Context, Schema } from 'koishi'

export const name = 'simple-kick'

export interface Config {}

export const Config: Schema<Config> = Schema.object({})

export function apply(ctx: Context) {
  ctx.command('kick <bot:user>', '踢出用户', { authority: 4 })
    .option('permanent', '-p')
    .action(async ({ session, options}, bot) => {
      ctx.logger('simple-kick').info(`kicking ${session.selfId}`)
      if (options.permanent) {
        await session.bot.kickGuildMember(session.guildId, bot, true)
      } else {
        await session.bot.kickGuildMember(session.guildId, bot, false)
      }
      return `已踢出 ${session.selfId}`
    })
}

2 个赞

斯你怎么调用的, tg @ 人?
onebot这边 user 参数类型应该是获取到
onebot:qid 这样的 ,tg实现问题?你判断一下平台名,然后字符串切片(bot.slice(左边,长度))
还有bot这个名字不太好(
你可以改成 banuser (替换,包括ctx.command里的

2 个赞

onebot和tg都有错误,我截tg单纯是因为日志好截(
onebot的错误日志得开debug日志:

2 个赞

你传入了错误的参数,kick 第一个参数是 userId,你传进去的是 guildId。翻译成人话就是「你想要把一个群聊踢出群聊」。

2 个赞


有人好像文档写错了

2 个赞


虽然但是你好像记反了()

但是如果我先写guildId的话,又会出现群聊不存在

2 个赞

先写guildId可能没问题,你试着分割一下bot变量
bot.split(‘:’)[1]

3 个赞

image
好好好
:heart:来自地球

3 个赞

口误,我是说你二参数是 userId,你写的 selfId,意思是踢自己

3 个赞