每日新闻速报, 每日 Bilibili 番剧速报
-
Mirai News Reporter
一个简单的每日新闻速报/番剧速报 mirai-console 插件
项目地址:
https://github.com/LinHeLurking/mirai-news-reporter
功能
- 爬取知乎的一个每日新闻页面, 以图片形式分享. 向机器人说 "今日新闻", "今日速报" 即可触发.
- 爬取 B 站的今日番剧列表, 以图片形式分享. 用 "今日动画", "今日番剧" 触发.
白名单
为了避免打扰网友, 群聊使用白名单管理. 只有通过命令指定的群聊, 才会在群聊中触发本机器人.
番剧群组白名单和新闻播报群组白名单是分开的两个名单,你可以使用
/reporter_list
命令来管理这两个名单。
该命令允许show
,add
,remove
三种后缀。其中add
,remove
两个后缀需要跟一个群号。
在群号之后你可以用anime
,news
来指定操作哪一个白名单(留空表示二者都操作)。举例如下:
将群号为 123456 的群加入番剧、新闻白名单:
/reporter_list add 123456
将群号为 123456 的群加入番剧白名单:
/reporter_list add 123456 anime
将群号为 123456 的群加入新闻白名单:
/reporter_list add 123456 news
更多命令细节可以通过 /help 获取.
自定义语句
Bot 在回复命令时的很多语句,都可以通过
/reporter_msg
命令来自定义。命令格式:
/reporter_msg <key> <list>
。其中,
<key>
的可能取值及其含义见下表。
<list>
是一个用逗号或分号分割的列表(也可以只是一个词),中文标点和英文标点都可以,但是不能有空格。
<list>
表示相应的用户发出触发语句可以使用<list>
中的任何一个,
而机器人回复的语句会在列表中随机选取。key 默认值 含义 dailyTriggers 今日,每日,日常,daily,Daily "今日番剧"/“每日新闻” 中的 “今日/每日” animeTriggers 番剧,动画,B站番剧,B站番剧 "今日番剧"/“每日动画” 中的 “番剧/动画” newsTriggers 新闻,速报,新闻速报 "今日新闻"/“每日速报” 中的 “新闻/速报” waitMessages 稍等哦QwQ 需要进行长加载时的提示语 animeDailyMessages 早上好呀,这是今天的B站番剧\n(•̀ω•́)✧ 早上的自动动画播报提示 animeReplyMessages 这是今天的B站番剧\n(•̀ω•́)✧ 用关键词触发播报后的回复语 noAnimeMessages 好像今天没有放送呢>_< 今天没有番剧时的提示语 newsDailyMessages 这是今天的新闻速报\nq(≧▽≦q) 早上的自动新闻播报提示 newsReplyMessages "这是今天的新闻速报 \nq(≧▽≦q)" 用关键词触发播报后的回复语 noDisturbingGroupMessages 为了防止打扰到网友,这个群不在日报白名单呢QwQ 白名单提示 errorMessages 出错啦,等会再试试吧 ̄へ ̄ 错误提示 上述的 key,写成单数形式也 OK
效果展示
目前排版还不是很好, 以后找机会继续优化.
效果展示:
今日番剧:
今日新闻:
-
此回复已被删除! -
@_casual 你说的是什么情况?
-
此回复已被删除! -
此回复已被删除! -
作者 这jar文件是放在根目录的plugin里面吗 我怎么运行之后就是一屏幕红码
-
作者好!插件正常运行了大概3天之后就出现了插件里生成了图片但无法发送到群里的情况,只有在小窗机器人时才有显示图片,插件没有报错,请问可能是什么原因呢
-
@seldon666 可能是账号被风控了
-
作者可以加一个指定群聊的每日自动发送功能吗!
-
请问一下/help没用是什么原因(大雾)
-
@linhelurking 好像出现了一些bug。
2021-10-25 10:14:31 E/Reporter: kotlinx.serialization.json.internal.JsonDecodingException: Unexpected JSON token at offset 6123: Encountered an unknown key 'delay_id'. Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys. JSON input: .....f69c64487efad.png","delay":1,"delay_id":400,"delay_index":"第..... kotlinx.serialization.json.internal.JsonDecodingException: Unexpected JSON token at offset 6123: Encountered an unknown key 'delay_id'. Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys. JSON input: .....f69c64487efad.png","delay":1,"delay_id":400,"delay_index":"第..... at kotlinx.serialization.json.internal.JsonExceptionsKt.JsonDecodingException(JsonExceptions.kt:24) at kotlinx.serialization.json.internal.JsonExceptionsKt.JsonDecodingException(JsonExceptions.kt:32) at kotlinx.serialization.json.internal.JsonLexer.fail(JsonLexer.kt:479) at kotlinx.serialization.json.internal.JsonLexer.failOnUnknownKey(JsonLexer.kt:475) at kotlinx.serialization.json.internal.StreamingJsonDecoder.handleUnknown(StreamingJsonDecoder.kt:154) at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeObjectIndex(StreamingJsonDecoder.kt:143) at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeElementIndex(StreamingJsonDecoder.kt:75) at online.ruin_of_future.reporter.AnimeInfo$$serializer.deserialize(AnimeCrawler.kt:19) at online.ruin_of_future.reporter.AnimeInfo$$serializer.deserialize(AnimeCrawler.kt:19) at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63) at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:32) at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43) at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableElement(AbstractDecoder.kt:70) at kotlinx.serialization.encoding.CompositeDecoder$DefaultImpls.decodeSerializableElement$default(Decoding.kt:535) at kotlinx.serialization.internal.ListLikeSerializer.readElement(CollectionSerializers.kt:80) at kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51) at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36) at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43) at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63) at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:32) at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43) at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableElement(AbstractDecoder.kt:70) at online.ruin_of_future.reporter.ResultByDate$$serializer.deserialize(AnimeCrawler.kt:47) at online.ruin_of_future.reporter.ResultByDate$$serializer.deserialize(AnimeCrawler.kt:47) at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63) at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:32) at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43) at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableElement(AbstractDecoder.kt:70) at kotlinx.serialization.encoding.CompositeDecoder$DefaultImpls.decodeSerializableElement$default(Decoding.kt:535) at kotlinx.serialization.internal.ListLikeSerializer.readElement(CollectionSerializers.kt:80) at kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51) at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36) at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43) at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63) at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:32) at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43) at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableElement(AbstractDecoder.kt:70) at online.ruin_of_future.reporter.TimeLineInfo$$serializer.deserialize(AnimeCrawler.kt:60) at online.ruin_of_future.reporter.TimeLineInfo$$serializer.deserialize(AnimeCrawler.kt:60) at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63) at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:32) at kotlinx.serialization.json.Json.decodeFromString(Json.kt:95) at online.ruin_of_future.reporter.AnimeCrawler.getData(AnimeCrawler.kt:210) at online.ruin_of_future.reporter.AnimeCrawler.animeByDate(AnimeCrawler.kt:178) at online.ruin_of_future.reporter.AnimeCrawler.animeToday(AnimeCrawler.kt:197) at online.ruin_of_future.reporter.ReporterPlugin$onEnable$sendAnimeToTarget$1.invokeSuspend(App.kt:113) 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:571) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
-
白名单命令是啥,控制台输/help没找到
-
@enderavaritia 谢谢反馈,这个是有番剧停播了,当时写的时候没注意到还有这种情况,目前已经修复了。在 Github 的最新 release 即可找到。
-
@fridayanubis 有这个功能呀,添加到群聊白名单就行了
-
@luis 我不清楚为什么。有可能你没有安装 chat-command 插件导致在聊天中不能运行指令?
-
@greatwo2 help 是可以正常运行的呀。
白名单命令有两类,新闻播报和动画播报是分开的。
/news_group add <target> /news_group 添加 <target> /news_group list /news_group 显示 /news_group 展示 /news_group show /news_group delete <target> /news_group remove <target> /news_group 删除 <target> /news_group 移除 <target> /anime_group add <target> /anime_group 添加 <target> /anime_group list /anime_group 显示 /anime_group 展示 /anime_group show /anime_group delete <target> /anime_group remove <target> /anime_group 删除 <target> /anime_group 移除 <target>
-
作者大大,我这里私聊发/help机器人也没反应,发/news_group list也没有反应。但是私聊每日新闻这些又有回应。
-
@1072324725 我是在控制台里面发的/help,可以实现效果
-
似乎出了点问题。
2021-12-30 10:46:48 V/Bot.385805595: Group(791616042) <- 这是今天的新闻速报 \nq(≧▽≦q) 2021-12-30 10:46:48 V/Bot.385805595: Event: GroupMessagePostSendEvent(target=Group(791616042), message=这是今天的新闻速 报 q(≧▽≦q), exception=null, receipt=net.mamoe.mirai.message.MessageReceipt@2751b398) 2021-12-30 10:46:48 V/Bot.385805595: Event: BeforeImageUploadEvent(target=Group(791616042), source=net.mamoe.mirai.internal.utils.ExternalResourceImplByFile@5e19891b) 2021-12-30 10:46:49 V/Bot.385805595: Event: Succeed(target=Group(791616042), source=net.mamoe.mirai.internal.utils.ExternalResourceImplByFile@5e19891b, image=[mirai:image:{F97E56DB-CF27-9021-1FC3-F859CB1D894C}.png]) 2021-12-30 10:46:49 V/Bot.385805595: Event: GroupMessagePreSendEvent(target=Group(791616042), message=[mirai:image:{F97E56DB-CF27-9021-1FC3-F859CB1D894C}.png]) 2021-12-30 10:46:52 V/Bot.385805595: Group(791616042) <- [mirai:image:{F97E56DB-CF27-9021-1FC3-F859CB1D894C}.png] 2021-12-30 10:46:52 V/Bot.385805595: Event: GroupMessagePostSendEvent(target=Group(791616042), message=[mirai:image:{F97E56DB-CF27-9021-1FC3-F859CB1D894C}.png], exception=null, receipt=net.mamoe.mirai.message.MessageReceipt@3abca2af)
-
这东西怎么下载