from nonebot.adapters.ding.event import GroupMessageEvent, PrivateMessageEvent from nonebot.rule import to_me from nonebot.plugin import on_command from nonebot.adapters.ding import Bot as DingBot, MessageSegment, MessageEvent helper = on_command("ding_helper", to_me()) @helper.handle() async def ding_helper(bot: DingBot, event: MessageEvent): message = MessageSegment.markdown( "Hello, This is NoneBot", """帮助信息如下:\n [ding_helper](dtmd://dingtalkclient/sendMessage?content=ding_helper) 查看帮助\n [markdown](dtmd://dingtalkclient/sendMessage?content=markdown) 发送 markdown\n [actionCardSingleBtn](dtmd://dingtalkclient/sendMessage?content=actionCardSingleBtn)\n [actionCard](dtmd://dingtalkclient/sendMessage?content=actionCard)\n [feedCard](dtmd://dingtalkclient/sendMessage?content=feedCard)\n [atme](dtmd://dingtalkclient/sendMessage?content=atme)\n [image](dtmd://dingtalkclient/sendMessage?content=image)\n [t](dtmd://dingtalkclient/sendMessage?content=t)\n [code](dtmd://dingtalkclient/sendMessage?content=code) 发送代码\n [test_message](dtmd://dingtalkclient/sendMessage?content=test_message)\n [hello](dtmd://dingtalkclient/sendMessage?content=hello)\n [webhook](dtmd://dingtalkclient/sendMessage?content=webhook)""", ) await markdown.finish(message) markdown = on_command("markdown", to_me()) @markdown.handle() async def markdown_handler(bot: DingBot): message = MessageSegment.markdown( "Hello, This is NoneBot", "#### NoneBot \n> Nonebot 是一款高性能的 Python 机器人框架\n> ![screenshot](https://v2.nonebot.dev/logo.png)\n> [GitHub 仓库地址](https://github.com/nonebot/nonebot2) \n" ) await markdown.finish(message) actionCardSingleBtn = on_command("actionCardSingleBtn", to_me()) @actionCardSingleBtn.handle() async def actionCardSingleBtn_handler(bot: DingBot): message = MessageSegment.actionCardSingleBtn( title="打造一间咖啡厅", text= "![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png) \n #### 乔布斯 20 年前想打造的苹果咖啡厅 \n\n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划", singleTitle="阅读全文", singleURL="https://www.dingtalk.com/") await actionCardSingleBtn.finish(message) actionCard = on_command("actionCard", to_me()) @actionCard.handle() async def actionCard_handler(bot: DingBot): message = MessageSegment.raw({ "msgtype": "actionCard", "actionCard": { "title": "乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身", "text": "![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png) \n\n #### 乔布斯 20 年前想打造的苹果咖啡厅 \n\n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划", "hideAvatar": "0", "btnOrientation": "0", "btns": [{ "title": "内容不错", "actionURL": "https://www.dingtalk.com/" }, { "title": "不感兴趣", "actionURL": "https://www.dingtalk.com/" }] } }) await actionCard.finish(message, at_sender=True) feedCard = on_command("feedCard", to_me()) @feedCard.handle() async def feedCard_handler(bot: DingBot): message = MessageSegment.raw({ "msgtype": "feedCard", "feedCard": { "links": [{ "title": "时代的火车向前开1", "messageURL": "https://www.dingtalk.com/", "picURL": "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png" }, { "title": "时代的火车向前开2", "messageURL": "https://www.dingtalk.com/", "picURL": "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png" }] } }) await feedCard.finish(message) atme = on_command("atme", to_me()) @atme.handle() async def atme_handler(bot: DingBot, event: MessageEvent): message = f"@{event.senderId} manually at you" + MessageSegment.atDingtalkIds( event.senderId) await atme.send("matcher send auto at you", at_sender=True) await bot.send(event, "bot send auto at you", at_sender=True) await atme.finish(message) image = on_command("image", to_me()) @image.handle() async def image_handler(bot: DingBot, event: MessageEvent): message = MessageSegment.image( "https://static-aliyun-doc.oss-accelerate.aliyuncs.com/assets/img/zh-CN/0634199951/p158167.png" ) await image.finish(message) textAdd = on_command("t", to_me()) @textAdd.handle() async def textAdd_handler(bot: DingBot, event: MessageEvent): message = "第一段消息\n" + MessageSegment.text("asdawefaefa\n") await textAdd.send(message) message = message + MessageSegment.text("第二段消息\n") await textAdd.send(message) message = message + MessageSegment.text( "\n第三段消息\n") + "adfkasfkhsdkfahskdjasdashdkjasdf" message = message + MessageSegment.extension({ "text_type": "code_snippet", "code_language": "C#" }) await textAdd.send(message) code = on_command("code", to_me()) @code.handle() async def code_handler(bot: DingBot, event: MessageEvent): raw = MessageSegment.code("Python", 'print("hello world")') await code.send(raw) message = MessageSegment.text("""using System; namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } }""") message += MessageSegment.extension({ "text_type": "code_snippet", "code_language": "C#" }) await code.finish(message) test_message = on_command("test_message", to_me()) @test_message.handle() async def test_message_handler1(bot: DingBot, event: PrivateMessageEvent): await test_message.finish("PrivateMessageEvent") @test_message.handle() async def test_message_handler2(bot: DingBot, event: GroupMessageEvent): await test_message.finish("GroupMessageEvent") hello = on_command("hello", to_me()) @hello.handle() async def hello_handler(bot: DingBot, event: MessageEvent): message = MessageSegment.raw({ "msgtype": "text", "text": { "content": 'hello ' }, }) message += MessageSegment.atDingtalkIds(event.senderId) await hello.send(message) message = MessageSegment.text(f"@{event.senderId},你好") message += MessageSegment.atDingtalkIds(event.senderId) await hello.finish(message) hello = on_command("webhook", to_me()) @hello.handle() async def webhook_handler(bot: DingBot, event: MessageEvent): print(event) message = MessageSegment.raw({ "msgtype": "text", "text": { "content": 'hello from webhook,一定要注意安全方式的鉴权哦,否则可能发送失败的' }, }) message += MessageSegment.atDingtalkIds(event.senderId) await hello.send( message, webhook= "https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXXXXXXXX", secret="SECXXXXXXXXXXXXXXXXXXXXXXXXX") message = MessageSegment.text("TEST 123123 S") await hello.send( message, webhook= "https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXXXXXXXX", )