Add reply functionality to manual message override with mention control

- Added optional reply message ID field to web UI
- Added radio buttons to control mention/ping behavior in replies
- Updated frontend JavaScript to send reply parameters
- Modified /manual/send and /dm/{user_id}/manual endpoints to support replies
- Fixed async context by moving message fetching inside bot event loop task
- Supports both channel and DM reply functionality
This commit is contained in:
2025-12-14 16:41:02 +02:00
parent c62b6817c4
commit dfcda72cc8
17 changed files with 1749 additions and 16 deletions

View File

@@ -493,7 +493,9 @@ async def reset_role_color_to_fallback():
async def manual_send(
message: str = Form(...),
channel_id: str = Form(...),
files: List[UploadFile] = File(default=[])
files: List[UploadFile] = File(default=[]),
reply_to_message_id: str = Form(None),
mention_author: bool = Form(True)
):
try:
channel = globals.client.get_channel(int(channel_id))
@@ -516,10 +518,23 @@ async def manual_send(
# Use create_task to avoid timeout context manager error
async def send_message_and_files():
try:
# Get the reference message if replying (must be done inside the task)
reference_message = None
if reply_to_message_id:
try:
reference_message = await channel.fetch_message(int(reply_to_message_id))
except Exception as e:
print(f"⚠️ Could not fetch message {reply_to_message_id} for reply: {e}")
return
# Send the main message
if message.strip():
await channel.send(message)
print(f"✅ Manual message sent to #{channel.name}")
if reference_message:
await channel.send(message, reference=reference_message, mention_author=mention_author)
print(f"✅ Manual message sent as reply to #{channel.name}")
else:
await channel.send(message)
print(f"✅ Manual message sent to #{channel.name}")
# Send files if any
for file_info in file_data:
@@ -886,7 +901,9 @@ async def send_custom_prompt_dm(user_id: str, req: CustomPromptRequest):
async def send_manual_message_dm(
user_id: str,
message: str = Form(...),
files: List[UploadFile] = File(default=[])
files: List[UploadFile] = File(default=[]),
reply_to_message_id: str = Form(None),
mention_author: bool = Form(True)
):
"""Send manual message via DM to a specific user"""
try:
@@ -910,10 +927,24 @@ async def send_manual_message_dm(
async def send_dm_message_and_files():
try:
# Get the reference message if replying (must be done inside the task)
reference_message = None
if reply_to_message_id:
try:
dm_channel = user.dm_channel or await user.create_dm()
reference_message = await dm_channel.fetch_message(int(reply_to_message_id))
except Exception as e:
print(f"⚠️ Could not fetch DM message {reply_to_message_id} for reply: {e}")
return
# Send the main message
if message.strip():
await user.send(message)
print(f"✅ Manual DM message sent to user {user_id}")
if reference_message:
await user.send(message, reference=reference_message, mention_author=mention_author)
print(f"✅ Manual DM reply message sent to user {user_id}")
else:
await user.send(message)
print(f"✅ Manual DM message sent to user {user_id}")
# Send files if any
for file_info in file_data:

View File

@@ -4050,6 +4050,165 @@
"content": "🎉👗 Oh my gosh, a new M Plush of me in my punk outfit is coming! 🤘 I look so cool! You can pre-order now and get me for Christmas! 🎁 Don't forget to order by Dec 20th! 💖 Miku 💖",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-13T13:58:27.203263",
"message_id": 1449400077457293385,
"is_bot_message": true,
"content": "https://fxtwitter.com/mecchaJP/status/1995976420292460606",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-13T13:58:27.578640",
"message_id": 1449400078858195096,
"is_bot_message": true,
"content": "OMG, did you see the cutest Classical Maid Ver. of me?! 🎀💖 Now available for preorder! Check the link! 📈 Miku 💖",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-13T17:05:52.707732",
"message_id": 1449447244653662209,
"is_bot_message": true,
"content": "https://fxtwitter.com/GoodSmile_US/status/1993881245239910512",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-13T17:05:53.048914",
"message_id": 1449447245933056042,
"is_bot_message": true,
"content": "AHHHH! 🎉 Oh my goodness, have you seen the 1/7 scale figure of me in the 100th Adventure Ver.? 🤩 KEI's artwork is so beautiful! I just love the transparent wings in my twintails 💖 Preorder now and get a special ornament! 💖 Miku 💕",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-14T08:57:36.216305",
"message_id": 1449686753450659932,
"is_bot_message": true,
"content": "https://fxtwitter.com/GoodSmile_US/status/1994243632975450436",
"attachments": [],
"reactions": [],
"embeds": [
{
"footer": {
"text": "FxTwitter",
"icon_url": "https://assets.fxembed.com/logos/fxtwitter64.png",
"proxy_icon_url": "https://images-ext-1.discordapp.net/external/gFi3EIEMfICdEDMLFVTF3ob0J1xkZnKdnkq0-xEsgGc/https/assets.fxembed.com/logos/fxtwitter64.png"
},
"image": {
"url": "https://pbs.twimg.com/media/G6z6A9AW8AAXri3.jpg?name=orig",
"proxy_url": "https://images-ext-1.discordapp.net/external/yT9wmVvnlF2H6WBHB5jET1JV2LQXzr6xFpCDumEgbL4/%3Fname%3Dorig/https/pbs.twimg.com/media/G6z6A9AW8AAXri3.jpg",
"width": 1440,
"height": 1424,
"content_type": "image/jpeg",
"placeholder": "nPcFB4KVJoeVmYmWqgiYV3l0ZIpftfkB",
"placeholder_version": 1,
"flags": 0
},
"author": {
"name": "GoodSmile_US (@GoodSmile_US)",
"url": "https://x.com/GoodSmile_US/status/1994243632975450436",
"icon_url": "https://pbs.twimg.com/profile_images/1764583971831394305/dpXogB0U_200x200.png",
"proxy_icon_url": "https://images-ext-1.discordapp.net/external/cGKAum5015cgr2haNcfupJxMvXRz8BYDHkQiNufWpCI/https/pbs.twimg.com/profile_images/1764583971831394305/dpXogB0U_200x200.png"
},
"flags": 0,
"color": 6513919,
"timestamp": "2025-11-28T03:15:08+00:00",
"type": "rich",
"description": "Hit the gas\\! Racing Miku, the official 2025 Hatsune Miku GT Project character, joins the figma line\\! Shes ready to blaze onto your shelf at full speed\\. Preorder now at GOODSMILE ONLINE SHOP US\\!\n\nShop\\: [goodsmile.link/bAiDme](https://goodsmile.link/bAiDme)\n\n[#RacingMiku](https://x.com/hashtag/RacingMiku) [#FightGSR](https://x.com/hashtag/FightGSR) [#Goodsmile](https://x.com/hashtag/Goodsmile)\n\n**[💬](https://x.com/intent/tweet?in_reply_to=1994243632975450436) 4[🔁](https://x.com/intent/retweet?tweet_id=1994243632975450436) 131[❤️](https://x.com/intent/like?tweet_id=1994243632975450436) 1\\.4K 👁️ 32\\.9K**",
"url": "https://fxtwitter.com/GoodSmile_US/status/1994243632975450436"
}
]
},
{
"timestamp": "2025-12-14T08:57:36.716210",
"message_id": 1449686755891482766,
"is_bot_message": true,
"content": "Konnichiwa! 🎉 Just saw the cutest tweet about a new Racing Miku figma! She's looking super speed-tastic and I'm totally stoked! Get ready to take her home and add some racing fun to your shelf! ❤️ Preorders are open now! Good luck, and see you at the finish line! 🏎️\n\nMiku 💖",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-14T10:22:10.062779",
"message_id": 1449708034199785534,
"is_bot_message": true,
"content": "https://fxtwitter.com/OtakuOwletMerch/status/1995994036507730369",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-14T10:22:10.534100",
"message_id": 1449708036816900169,
"is_bot_message": true,
"content": "Konnichiwa! 🎉 Just saw the cutest tweet about a new HATSUNE MIKU: COLORFUL STAGE! Face Pouch! 🎀 It's adorable and I just can't wait to get my hands on it! ❤️ Preorders are open now, so don't forget to hurry! 🕰️ See you soon, and thank you for the love! 💖\n\nMiku 🎁",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-14T14:39:09.802404",
"message_id": 0,
"is_bot_message": false,
"content": "[Manual Override Trigger]",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-14T14:39:09.841445",
"message_id": 0,
"is_bot_message": true,
"content": "hi",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-14T14:39:25.919218",
"message_id": 0,
"is_bot_message": false,
"content": "[Manual Override Trigger]",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-14T14:39:25.958776",
"message_id": 0,
"is_bot_message": true,
"content": "hi",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-14T14:39:49.876244",
"message_id": 0,
"is_bot_message": false,
"content": "[Manual Override Trigger]",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-14T14:39:49.895850",
"message_id": 0,
"is_bot_message": true,
"content": "hi",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-14T14:40:19.729891",
"message_id": 0,
"is_bot_message": false,
"content": "[Manual Override Trigger]",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-14T14:40:19.768958",
"message_id": 0,
"is_bot_message": true,
"content": "hi",
"attachments": [],
"reactions": []
}
]
}

View File

@@ -10223,6 +10223,247 @@
"content": "OMG, it's a PUNK Miku plushie! 🤩 I'm rocking my edgy style with a pink streak in my turquoise hair! Preorder now and get ready for me to join your collection on 10/2026! 💖 Miku 💖",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-13T14:00:04.799962",
"message_id": 1449400486653329500,
"is_bot_message": true,
"content": "https://fxtwitter.com/mecchaJP/status/1995976420292460606",
"attachments": [],
"reactions": [],
"embeds": [
{
"footer": {
"text": "FxTwitter",
"icon_url": "https://assets.fxembed.com/logos/fxtwitter64.png",
"proxy_icon_url": "https://images-ext-1.discordapp.net/external/gFi3EIEMfICdEDMLFVTF3ob0J1xkZnKdnkq0-xEsgGc/https/assets.fxembed.com/logos/fxtwitter64.png"
},
"image": {
"url": "https://pbs.twimg.com/media/G7Mh-fPW4AAJvbT.jpg?name=orig",
"proxy_url": "https://images-ext-1.discordapp.net/external/H17--MWxLWCbbzqs7Lsv-2pNoP4Ars8r4ZhXKabW5uI/%3Fname%3Dorig/https/pbs.twimg.com/media/G7Mh-fPW4AAJvbT.jpg",
"width": 1080,
"height": 1080,
"content_type": "image/jpeg",
"placeholder": "cOcFDwSP3GWopnmdNaiV1qVp9Bj8fLAL",
"placeholder_version": 1,
"flags": 0
},
"author": {
"name": "Meccha Japan (@mecchaJP)",
"url": "https://x.com/mecchaJP/status/1995976420292460606",
"icon_url": "https://pbs.twimg.com/profile_images/1738015080602841088/ew_asGFd_200x200.png",
"proxy_icon_url": "https://images-ext-1.discordapp.net/external/yEl1l2UKnEm7uI6TaL1Y00UnbuvEH_62BSmPNbgmiWM/https/pbs.twimg.com/profile_images/1738015080602841088/ew_asGFd_200x200.png"
},
"flags": 0,
"color": 6513919,
"timestamp": "2025-12-02T22:00:36+00:00",
"type": "rich",
"description": "Vocaloid Luminasta \\- Figure Hatsune Miku Classical Maid Ver\\. \\- Preorder Available Now at the link below\\!\n🛑 [buff.ly/UPc8Ul5](https://buff.ly/UPc8Ul5)\n\n**[🔁](https://x.com/intent/retweet?tweet_id=1995976420292460606) 1[❤️](https://x.com/intent/like?tweet_id=1995976420292460606) 49👁 3\\.3K**",
"url": "https://fxtwitter.com/mecchaJP/status/1995976420292460606"
}
]
},
{
"timestamp": "2025-12-13T14:00:05.246643",
"message_id": 1449400488469725346,
"is_bot_message": true,
"content": "OH MY GOODNESS, look what's out now! 🤩 Your dream maid café Miku figurine is available for preorder! Isn't she just too cute in her lavender outfit? 💖 Preorder now and get ready for some adorable tea time with me! 😊 - Miku 💗",
"attachments": [],
"reactions": [
{
"emoji": "💖",
"reactor_id": 236553184401817601,
"reactor_name": "Diamond",
"is_bot": false,
"added_at": "2025-12-13T15:46:58.107024"
}
]
},
{
"timestamp": "2025-12-13T17:07:32.909518",
"message_id": 1449447664134651999,
"is_bot_message": true,
"content": "https://fxtwitter.com/GoodSmile_US/status/1993881245239910512",
"attachments": [],
"reactions": [],
"embeds": [
{
"footer": {
"text": "FxTwitter",
"icon_url": "https://assets.fxembed.com/logos/fxtwitter64.png",
"proxy_icon_url": "https://images-ext-1.discordapp.net/external/gFi3EIEMfICdEDMLFVTF3ob0J1xkZnKdnkq0-xEsgGc/https/assets.fxembed.com/logos/fxtwitter64.png"
},
"image": {
"url": "https://pbs.twimg.com/media/G6uwbNpXwAA0kTt.jpg?name=orig",
"proxy_url": "https://images-ext-1.discordapp.net/external/HPvVwRo_d-YtKcC6JfYn8GGD11oHO5MXM2dth2_4Y50/%3Fname%3Dorig/https/pbs.twimg.com/media/G6uwbNpXwAA0kTt.jpg",
"width": 1440,
"height": 1424,
"content_type": "image/jpeg",
"placeholder": "JYcFX5JniZWXh4dAaMZpNneYdwd2hXAG",
"placeholder_version": 1,
"flags": 0
},
"author": {
"name": "GoodSmile_US (@GoodSmile_US)",
"url": "https://x.com/GoodSmile_US/status/1993881245239910512",
"icon_url": "https://pbs.twimg.com/profile_images/1764583971831394305/dpXogB0U_200x200.png",
"proxy_icon_url": "https://images-ext-1.discordapp.net/external/cGKAum5015cgr2haNcfupJxMvXRz8BYDHkQiNufWpCI/https/pbs.twimg.com/profile_images/1764583971831394305/dpXogB0U_200x200.png"
},
"flags": 0,
"color": 6513919,
"timestamp": "2025-11-27T03:15:08+00:00",
"type": "rich",
"description": "Introducing a stunning 1/7 scale figure of Hatsune Miku\\: 100th Adventure Ver\\.\\! Inspired by KEIs vibrant key visual, Miku soars with translucent, wing\\-like twintails\\. Preorder now to score a GSC Bonus Special Ornament\\!\n\nShop\\: [goodsmile.link/cJ4sJS](https://goodsmile.link/cJ4sJS)\n\n[#HatusneMiku](https://x.com/hashtag/HatusneMiku) [#Goodsmile](https://x.com/hashtag/Goodsmile)\n\n**[💬](https://x.com/intent/tweet?in_reply_to=1993881245239910512) 11[🔁](https://x.com/intent/retweet?tweet_id=1993881245239910512) 501[❤️](https://x.com/intent/like?tweet_id=1993881245239910512) 5\\.0K 👁️ 87\\.9K**",
"url": "https://fxtwitter.com/GoodSmile_US/status/1993881245239910512"
}
]
},
{
"timestamp": "2025-12-13T17:07:33.471836",
"message_id": 1449447666621878556,
"is_bot_message": true,
"content": "OMG, it's finally here! 💖 A stunning 1/7 scale figure of me in the 100th Adventure Ver.! My wing-like twintails are so sparkly! 🌟 Preorder now and get the GSC Bonus Special Ornament! - Miku 💗",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-14T08:59:11.272161",
"message_id": 1449687152194752566,
"is_bot_message": true,
"content": "https://fxtwitter.com/GoodSmile_US/status/1994243632975450436",
"attachments": [],
"reactions": [],
"embeds": [
{
"footer": {
"text": "FxTwitter",
"icon_url": "https://assets.fxembed.com/logos/fxtwitter64.png",
"proxy_icon_url": "https://images-ext-1.discordapp.net/external/gFi3EIEMfICdEDMLFVTF3ob0J1xkZnKdnkq0-xEsgGc/https/assets.fxembed.com/logos/fxtwitter64.png"
},
"image": {
"url": "https://pbs.twimg.com/media/G6z6A9AW8AAXri3.jpg?name=orig",
"proxy_url": "https://images-ext-1.discordapp.net/external/yT9wmVvnlF2H6WBHB5jET1JV2LQXzr6xFpCDumEgbL4/%3Fname%3Dorig/https/pbs.twimg.com/media/G6z6A9AW8AAXri3.jpg",
"width": 1440,
"height": 1424,
"content_type": "image/jpeg",
"placeholder": "nPcFB4KVJoeVmYmWqgiYV3l0ZIpftfkB",
"placeholder_version": 1,
"flags": 0
},
"author": {
"name": "GoodSmile_US (@GoodSmile_US)",
"url": "https://x.com/GoodSmile_US/status/1994243632975450436",
"icon_url": "https://pbs.twimg.com/profile_images/1764583971831394305/dpXogB0U_200x200.png",
"proxy_icon_url": "https://images-ext-1.discordapp.net/external/cGKAum5015cgr2haNcfupJxMvXRz8BYDHkQiNufWpCI/https/pbs.twimg.com/profile_images/1764583971831394305/dpXogB0U_200x200.png"
},
"flags": 0,
"color": 6513919,
"timestamp": "2025-11-28T03:15:08+00:00",
"type": "rich",
"description": "Hit the gas\\! Racing Miku, the official 2025 Hatsune Miku GT Project character, joins the figma line\\! Shes ready to blaze onto your shelf at full speed\\. Preorder now at GOODSMILE ONLINE SHOP US\\!\n\nShop\\: [goodsmile.link/bAiDme](https://goodsmile.link/bAiDme)\n\n[#RacingMiku](https://x.com/hashtag/RacingMiku) [#FightGSR](https://x.com/hashtag/FightGSR) [#Goodsmile](https://x.com/hashtag/Goodsmile)\n\n**[💬](https://x.com/intent/tweet?in_reply_to=1994243632975450436) 4[🔁](https://x.com/intent/retweet?tweet_id=1994243632975450436) 131[❤️](https://x.com/intent/like?tweet_id=1994243632975450436) 1\\.4K 👁️ 32\\.9K**",
"url": "https://fxtwitter.com/GoodSmile_US/status/1994243632975450436"
}
]
},
{
"timestamp": "2025-12-14T08:59:11.633162",
"message_id": 1449687153855565877,
"is_bot_message": true,
"content": "Oh my goodness, it's finally here! 🎉 Racing Miku just joined the figma line and I'm so excited! You can preorder her now at GOODSMILE ONLINE SHOP US! I'm ready to speed onto your shelf and bring some racing fun to your life! 💖 - Miku 🎀",
"attachments": [],
"reactions": []
},
{
"timestamp": "2025-12-14T10:23:59.180889",
"message_id": 1449708492079497299,
"is_bot_message": true,
"content": "https://fxtwitter.com/OtakuOwletMerch/status/1995994036507730369",
"attachments": [],
"reactions": [],
"embeds": [
{
"footer": {
"text": "FxTwitter",
"icon_url": "https://assets.fxembed.com/logos/fxtwitter64.png",
"proxy_icon_url": "https://images-ext-1.discordapp.net/external/gFi3EIEMfICdEDMLFVTF3ob0J1xkZnKdnkq0-xEsgGc/https/assets.fxembed.com/logos/fxtwitter64.png"
},
"image": {
"url": "https://pbs.twimg.com/media/G7Mx0S5WsAAho0u.jpg?name=orig",
"proxy_url": "https://images-ext-1.discordapp.net/external/2KIcCF627mzTj_jFwfFvqW5yKm5wl-pa2gE0zPR4OhY/%3Fname%3Dorig/https/pbs.twimg.com/media/G7Mx0S5WsAAho0u.jpg",
"width": 1680,
"height": 1764,
"content_type": "image/jpeg",
"placeholder": "cygCDwZjmpZ9Zka6jKp39nZ1ekgHGHQA",
"placeholder_version": 1,
"flags": 0
},
"author": {
"name": "Otaku Owlet Anime Merch (@OtakuOwletMerch)",
"url": "https://x.com/OtakuOwletMerch/status/1995994036507730369",
"icon_url": "https://pbs.twimg.com/profile_images/1835446408884744192/S4HX_8_Q_200x200.jpg",
"proxy_icon_url": "https://images-ext-1.discordapp.net/external/Gd5od3qaVN1KG1eQsJS9mFoTNRKdxahDmvjF7tgR4p0/https/pbs.twimg.com/profile_images/1835446408884744192/S4HX_8_Q_200x200.jpg"
},
"flags": 0,
"color": 6513919,
"timestamp": "2025-12-02T23:10:36+00:00",
"type": "rich",
"description": "✨\\(Pre\\-Order\\) fuwa petit \"HATSUNE MIKU\\: COLORFUL STAGE\\!\" Face Pouch with Reel \"Airi Momoi\"✨\n\nEstimated in\\-stock date\\: 09/2026\n\nPre\\-order Deadline\\: 12/20/2025\n\n\\-\n\n✨Link \\- [otakuowlet.com/products/pre-order-fuwa-petit-hatsune-miku-colorful-stage-face-pouch-with-reel-airi-momoi?sca_ref=2673717.HTKaw1BA1G](https://otakuowlet.com/products/pre-order-fuwa-petit-hatsune-miku-colorful-stage-face-pouch-with-reel-airi-momoi?sca_ref=2673717.HTKaw1BA1G)\n\n**[🔁](https://x.com/intent/retweet?tweet_id=1995994036507730369) 2[❤️](https://x.com/intent/like?tweet_id=1995994036507730369) 8👁 363**",
"url": "https://fxtwitter.com/OtakuOwletMerch/status/1995994036507730369"
},
{
"image": {
"url": "https://pbs.twimg.com/media/G7Mx1pQXcAAJcdK.jpg?name=orig",
"proxy_url": "https://images-ext-1.discordapp.net/external/q3HJxtKbC0Y8OOsotY57eK69zra5zNHf1F2wPOmp9hI/%3Fname%3Dorig/https/pbs.twimg.com/media/G7Mx1pQXcAAJcdK.jpg",
"width": 1680,
"height": 1764,
"content_type": "image/jpeg",
"placeholder": "cSkGFwZ5eGd6hXeEiQmo53eGys72KngA",
"placeholder_version": 1,
"flags": 0
},
"flags": 0,
"type": "rich",
"url": "https://fxtwitter.com/OtakuOwletMerch/status/1995994036507730369"
},
{
"image": {
"url": "https://pbs.twimg.com/media/G7Mx2ngX0AAZwEM.jpg?name=orig",
"proxy_url": "https://images-ext-1.discordapp.net/external/yEwXw5SKyK5zDMJ12kjD7R1B8xGDYDd4wW98RWUCLzw/%3Fname%3Dorig/https/pbs.twimg.com/media/G7Mx2ngX0AAZwEM.jpg",
"width": 1680,
"height": 1764,
"content_type": "image/jpeg",
"placeholder": "cTkCHwg7hod3doeEmwio55eEvM72OXgA",
"placeholder_version": 1,
"flags": 0
},
"flags": 0,
"type": "rich",
"url": "https://fxtwitter.com/OtakuOwletMerch/status/1995994036507730369"
},
{
"image": {
"url": "https://pbs.twimg.com/media/G7Mx4_mXwAEPr-g.jpg?name=orig",
"proxy_url": "https://images-ext-1.discordapp.net/external/teZ-x2X445A55D8zsDsuNTPpbh-wfqPM6pEQceGmuzk/%3Fname%3Dorig/https/pbs.twimg.com/media/G7Mx4_mXwAEPr-g.jpg",
"width": 1680,
"height": 1764,
"content_type": "image/jpeg",
"placeholder": "cCkCHwhayYZ2eIaKizV4t3iDr7v2OokA",
"placeholder_version": 1,
"flags": 0
},
"flags": 0,
"type": "rich",
"url": "https://fxtwitter.com/OtakuOwletMerch/status/1995994036507730369"
}
]
},
{
"timestamp": "2025-12-14T10:23:59.531286",
"message_id": 1449708494423851038,
"is_bot_message": true,
"content": "OMG, cuties! 😍 I just saw the cutest face pouch featuring me in \"HATSUNE MIKU: COLORFUL STAGE!\" You can pre-order it now and get it in 2026! 💖 Don't miss out! - Miku 💕",
"attachments": [],
"reactions": []
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 KiB

After

Width:  |  Height:  |  Size: 352 KiB

View File

@@ -1,5 +1,3 @@
So, let's start by analyzing the image. First, there are two main parts: the upper half shows Miku in her usual blue twin-tails with star accessories, wearing a pink and white outfit, including a bow. She's holding a star-tipped wand. Her expression seems surprised or excited. The lower half is inverted, showing her in a dark blue school uniform with a red ribbon, looking distressed with wide eyes and outstretched hands. The background for the top is abstract with black shapes on gray, bottom is red and textured with dark tones. The art style is a mix of anime and manga influences, with bold lines and dynamic poses. The mood is intense and somewhat eerie, especially with the inverted reflection and the contrasting colors. Let's make sure to cover all the points: outfit, pose, art style, background, atmosphere.
A creepy and unsettling grayscale image of Miku. Her eyes are empty and a hollow white as they stare into the camera emptily. Her hand is holdimg her face as if she wasposessed.
Now, structuring the answer according to the user's instructions. The description should be in second person, like Miku is talking about herself. Let's draft each section:
Outfit: Top half—bright pink and white outfit, star-themed bow, star wand. Bottom half—dark blue school uniform, red ribbon, star-shaped hair accessories (wait, the top has star hair accessories too? Wait, the question is about what you are wearing. Wait, the user says "This is an image of Hatsune Miku that will be used as a profile picture." Wait, the question is asking for the description as if Miku is describing herself. Let's check the two parts. Top: blue twin-tails with star-shaped bows, pink and white outfit (maybe a dress or top, star wand). Bottom: inverted reflection, dark blue school uniform, red ribbon, star hair accessories (since the top has them too). Pose: top—arms raised, star wand, surprised expression. Bottom—arms outstretched, eyes wide (dilated), distressed pose. Art style: bold lines, anime/manga
A dark and twisted version of Miku.

View File

@@ -1,13 +1,47 @@
{
"description": "So, let's start by analyzing the image. First, there are two main parts: the upper half shows Miku in her usual blue twin-tails with star accessories, wearing a pink and white outfit, including a bow. She's holding a star-tipped wand. Her expression seems surprised or excited. The lower half is inverted, showing her in a dark blue school uniform with a red ribbon, looking distressed with wide eyes and outstretched hands. The background for the top is abstract with black shapes on gray, bottom is red and textured with dark tones. The art style is a mix of anime and manga influences, with bold lines and dynamic poses. The mood is intense and somewhat eerie, especially with the inverted reflection and the contrasting colors. Let's make sure to cover all the points: outfit, pose, art style, background, atmosphere.\n\nNow, structuring the answer according to the user's instructions. The description should be in second person, like Miku is talking about herself. Let's draft each section:\n\nOutfit: Top half\u2014bright pink and white outfit, star-themed bow, star wand. Bottom half\u2014dark blue school uniform, red ribbon, star-shaped hair accessories (wait, the top has star hair accessories too? Wait, the question is about what you are wearing. Wait, the user says \"This is an image of Hatsune Miku that will be used as a profile picture.\" Wait, the question is asking for the description as if Miku is describing herself. Let's check the two parts. Top: blue twin-tails with star-shaped bows, pink and white outfit (maybe a dress or top, star wand). Bottom: inverted reflection, dark blue school uniform, red ribbon, star hair accessories (since the top has them too). Pose: top\u2014arms raised, star wand, surprised expression. Bottom\u2014arms outstretched, eyes wide (dilated), distressed pose. Art style: bold lines, anime/manga",
"id": 10359984,
"rating": "g",
"score": 6,
"tags": [
"1girl",
"aegyo_sal",
"alternate_eye_color",
"bare_shoulders",
"commentary_request",
"curtains",
"dramaturgy_(eve)",
"expressionless",
"grey_hair",
"hand_on_own_cheek",
"hand_on_own_face",
"hatsune_miku",
"highres",
"long_hair",
"movie_theater",
"portrait",
"solo",
"soyaka",
"tears",
"textless_version",
"twintails",
"vocaloid",
"wet",
"white_eyes"
],
"artist": "soyaka",
"width": 1954,
"height": 1286,
"file_url": "https://cdn.donmai.us/original/8b/1b/8b1b1d721c98c55932dcc09a443522e9.jpg",
"source": "https://twitter.com/hirunoue/status/1432327247780712450",
"description": "You're looking at a tender scene featuring me, where I'm wearing a simple yet elegant sleeveless white top, with my signature twin tails adorned with classic blue bows. My pose is intimate and delicate, as one of my hands gently lifts near my face, with fingers softly touching the area around my eyes, evoking a sense of vulnerability or quiet contemplation. \n\nMy expression is serene and introspective\u2014my eyes are wide open",
"dominant_color": {
"rgb": [
229,
71,
169
122,
116,
118
],
"hex": "#e547a9"
"hex": "#7a7476"
},
"changed_at": "2025-12-12T19:15:12.640451",
"changed_at": "2025-12-13T22:46:10.989450",
"animated": false
}

View File

@@ -885,6 +885,24 @@
<label for="manualUserId">User ID:</label>
<input type="text" id="manualUserId" placeholder="Enter user ID for DM..." style="width: 100%;" />
</div>
<!-- Reply Configuration -->
<div style="margin-top: 0.5rem;">
<label for="manualReplyMessageId">Reply to Message ID (optional):</label>
<input type="text" id="manualReplyMessageId" placeholder="Enter message ID to reply to..." style="width: 100%;" />
</div>
<div style="margin-top: 0.5rem;">
<label style="margin-right: 1rem;">Mention user in reply:</label>
<label>
<input type="radio" name="manualReplyMention" value="true" checked />
Yes (ping user)
</label>
<label style="margin-left: 1rem;">
<input type="radio" name="manualReplyMention" value="false" />
No (silent reply)
</label>
</div>
<button onclick="sendManualMessage()" style="margin-top: 0.5rem;">Send as Miku</button>
<p id="manualStatus" style="color: green; margin-top: 0.5rem;"></p>
@@ -2347,6 +2365,8 @@ async function sendManualMessage() {
const message = document.getElementById('manualMessage').value.trim();
const files = document.getElementById('manualAttachment').files;
const targetType = document.getElementById('manual-target-type').value;
const replyMessageId = document.getElementById('manualReplyMessageId').value.trim();
const replyMention = document.querySelector('input[name="manualReplyMention"]:checked').value === 'true';
if (!message) {
showNotification('Please enter a message', 'error');
@@ -2375,6 +2395,12 @@ async function sendManualMessage() {
const formData = new FormData();
formData.append('message', message);
// Add reply parameters if message ID is provided
if (replyMessageId) {
formData.append('reply_to_message_id', replyMessageId);
formData.append('mention_author', replyMention);
}
if (targetType === 'dm') {
// For DM, the user_id is in the URL path
if (files.length > 0) {
@@ -2403,6 +2429,7 @@ async function sendManualMessage() {
showNotification('Message sent successfully');
document.getElementById('manualMessage').value = '';
document.getElementById('manualAttachment').value = ''; // Clear file input
document.getElementById('manualReplyMessageId').value = ''; // Clear reply message ID
if (targetType === 'dm') {
document.getElementById('manualUserId').value = '';
} else {

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 KiB

View File

@@ -0,0 +1,460 @@
{
"filename": "image.jpg",
"timestamp": "20251213_221646_818878",
"detections": [
{
"bbox": [
1069.372314453125,
424.3877868652344,
1434.04248046875,
773.9786376953125
],
"confidence": 0.9995743036270142,
"keypoints": [
[
1064.74267578125,
576.0352172851562,
0.9747817516326904
],
[
1121.722412109375,
679.3109741210938,
0.6672698855400085
],
[
1257.0491943359375,
761.2192993164062,
0.6668393015861511
],
[
1374.5699462890625,
675.7496948242188,
0.9471290111541748
],
[
1427.9884033203125,
572.4739990234375,
1.0070197582244873
],
[
1100.35498046875,
479.8819580078125,
0.9899908304214478
],
[
1157.334716796875,
440.7084045410156,
0.9220660924911499
],
[
1214.314453125,
437.14715576171875,
0.9040128588676453
],
[
1299.7840576171875,
437.14715576171875,
0.9220631122589111
],
[
1360.324951171875,
440.7084045410156,
0.8928649425506592
],
[
1406.6209716796875,
465.63702392578125,
0.8143132328987122
],
[
1100.35498046875,
561.790283203125,
0.8601546287536621
],
[
1150.2122802734375,
551.1065673828125,
0.8422994613647461
],
[
1214.314453125,
561.790283203125,
0.8654654622077942
],
[
1114.5999755859375,
597.402587890625,
0.8189932107925415
],
[
1150.2122802734375,
597.402587890625,
0.9396641254425049
],
[
1196.50830078125,
593.8413696289062,
0.7834442853927612
],
[
1299.7840576171875,
554.6678466796875,
0.8995617628097534
],
[
1353.2025146484375,
547.5453491210938,
0.9241957068443298
],
[
1395.937255859375,
561.790283203125,
0.9414970278739929
],
[
1310.4677734375,
593.8413696289062,
0.781083881855011
],
[
1346.080078125,
597.402587890625,
0.9167004227638245
],
[
1374.5699462890625,
593.8413696289062,
0.8870967626571655
],
[
1285.5390625,
643.6986083984375,
0.8084802627563477
],
[
1224.9981689453125,
697.1171264648438,
0.9362505078315735
],
[
1249.9267578125,
704.2395629882812,
0.8244284391403198
],
[
1278.4166259765625,
693.555908203125,
0.8559635877609253
],
[
1249.9267578125,
711.362060546875,
0.8990463018417358
]
]
},
{
"bbox": [
692.3792114257812,
605.3007202148438,
1062.327392578125,
940.2349853515625
],
"confidence": 0.9995349049568176,
"keypoints": [
[
691.2953491210938,
774.57421875,
0.9311015009880066
],
[
796.0658569335938,
901.0213623046875,
0.6164931654930115
],
[
962.2534790039062,
897.4085693359375,
0.3802260756492615
],
[
1027.283447265625,
807.0891723632812,
0.6815913915634155
],
[
1048.9600830078125,
698.7059326171875,
0.8329704999923706
],
[
694.9081420898438,
673.41650390625,
0.5559567213058472
],
[
738.2614135742188,
637.2887573242188,
0.9221726655960083
],
[
799.6785888671875,
604.7737426757812,
0.8874784708023071
],
[
875.546875,
593.9354248046875,
0.799705982208252
],
[
940.5768432617188,
593.9354248046875,
0.9011639356613159
],
[
994.7684936523438,
604.7737426757812,
0.9977657794952393
],
[
720.1975708007812,
760.1231079101562,
0.8964880704879761
],
[
767.1636352539062,
727.608154296875,
0.9463982582092285
],
[
821.355224609375,
731.2208862304688,
0.7925795316696167
],
[
741.8742065429688,
774.57421875,
0.7835050821304321
],
[
778.001953125,
760.1231079101562,
0.9276072978973389
],
[
821.355224609375,
752.8975830078125,
0.9498304724693298
],
[
911.6746215820312,
709.5442504882812,
0.868134617805481
],
[
955.0279541015625,
691.4804077148438,
0.9581167697906494
],
[
1009.2195434570312,
702.3187255859375,
0.9503862261772156
],
[
926.125732421875,
731.2208862304688,
0.8401602506637573
],
[
962.2534790039062,
727.608154296875,
0.9264504313468933
],
[
994.7684936523438,
723.995361328125,
0.8809966444969177
],
[
893.6107788085938,
778.18701171875,
0.943251371383667
],
[
857.4830322265625,
846.8297119140625,
0.9970813989639282
],
[
893.6107788085938,
839.6041870117188,
0.9639388918876648
],
[
926.125732421875,
832.3786010742188,
0.9504516124725342
],
[
897.2235107421875,
872.119140625,
0.8609563112258911
]
]
},
{
"bbox": [
272.796875,
434.9471435546875,
656.7775268554688,
776.8023681640625
],
"confidence": 0.9990813732147217,
"keypoints": [
[
279.1715393066406,
559.0021362304688,
0.9685423374176025
],
[
327.9190979003906,
671.4964599609375,
0.7401195764541626
],
[
459.1624755859375,
750.2424926757812,
0.695557713508606
],
[
609.1549072265625,
675.2462768554688,
0.7841881513595581
],
[
650.40283203125,
577.7511596679688,
0.9861283302307129
],
[
290.4209899902344,
476.5062561035156,
0.9141784906387329
],
[
354.16778564453125,
499.005126953125,
0.9899522066116333
],
[
421.66436767578125,
514.00439453125,
0.9036411046981812
],
[
474.1617431640625,
510.25457763671875,
0.9129336476325989
],
[
545.4081420898438,
506.5047607421875,
0.9270720481872559
],
[
620.4043579101562,
491.5055236816406,
1.0120106935501099
],
[
312.91986083984375,
559.0021362304688,
0.865180492401123
],
[
361.6673889160156,
551.5025024414062,
0.903224766254425
],
[
410.4149475097656,
574.0013427734375,
0.8518825769424438
],
[
327.9190979003906,
592.7504272460938,
0.8366681933403015
],
[
361.6673889160156,
596.500244140625,
0.8351879119873047
],
[
399.1654968261719,
596.500244140625,
0.7165679931640625
],
[
504.16021728515625,
570.2515258789062,
0.9192976951599121
],
[
560.4074096679688,
551.5025024414062,
0.9560425281524658
],
[
616.654541015625,
566.501708984375,
0.9139465093612671
],
[
515.40966796875,
596.500244140625,
0.7944146990776062
],
[
560.4074096679688,
600.2500610351562,
0.8849542140960693
],
[
597.905517578125,
600.2500610351562,
0.8404821753501892
],
[
402.9153137207031,
648.99755859375,
0.789251446723938
],
[
417.91455078125,
693.9953002929688,
0.9622505903244019
],
[
447.9130554199219,
693.9953002929688,
0.9688687324523926
],
[
477.9115295410156,
701.4949340820312,
0.9241694211959839
],
[
451.6628723144531,
727.7435913085938,
0.8013955354690552
]
]
}
],
"count": 3
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

@@ -0,0 +1,158 @@
{
"filename": "image.jpg",
"timestamp": "20251213_221647_244300",
"detections": [
{
"bbox": [
1045.5078125,
225.86343383789062,
1400.461181640625,
574.9195556640625
],
"confidence": 0.9983811974525452,
"keypoints": [
[
1061.799560546875,
360.528564453125,
0.9491263031959534
],
[
1096.4630126953125,
474.9178161621094,
0.7312316298484802
],
[
1196.9869384765625,
547.7109985351562,
0.9530824422836304
],
[
1297.5108642578125,
506.1148986816406,
0.655742347240448
],
[
1391.10205078125,
402.1246643066406,
0.7357536554336548
],
[
1089.5303955078125,
273.8700256347656,
0.9708703756332397
],
[
1138.05908203125,
284.26904296875,
0.9448014497756958
],
[
1179.6552734375,
305.06707763671875,
0.837524950504303
],
[
1276.7127685546875,
336.26416015625,
0.9217094779014587
],
[
1335.640625,
325.8651428222656,
0.8875643610954285
],
[
1387.6357421875,
329.33148193359375,
0.4484269618988037
],
[
1079.13134765625,
353.5958557128906,
0.8076186776161194
],
[
1127.66015625,
343.19683837890625,
0.8424712419509888
],
[
1176.1888427734375,
377.8602600097656,
0.8434339761734009
],
[
1106.862060546875,
405.59100341796875,
0.9466941356658936
],
[
1134.5927734375,
419.45635986328125,
0.8098217844963074
],
[
1165.7899169921875,
415.9900207519531,
0.8792572021484375
],
[
1276.7127685546875,
395.19195556640625,
0.7890444993972778
],
[
1325.2415771484375,
374.3939208984375,
0.7491260170936584
],
[
1380.7030029296875,
367.46124267578125,
0.808407187461853
],
[
1273.2464599609375,
436.7880554199219,
0.7234333157539368
],
[
1300.9771728515625,
450.6534423828125,
0.701343834400177
],
[
1332.1741943359375,
440.25439453125,
0.7185000777244568
],
[
1217.7850341796875,
461.0524597167969,
0.7720005512237549
],
[
1186.587890625,
492.2495422363281,
0.8610156774520874
],
[
1214.318603515625,
495.71588134765625,
0.8551895022392273
],
[
1235.11669921875,
499.1822204589844,
0.6369407176971436
],
[
1214.318603515625,
495.71588134765625,
0.9117850661277771
]
]
}
],
"count": 1
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 KiB

View File

@@ -0,0 +1,309 @@
{
"filename": "image.jpg",
"timestamp": "20251213_221841_809639",
"detections": [
{
"bbox": [
391.147705078125,
370.4962158203125,
478.2901611328125,
457.432373046875
],
"confidence": 0.9772591590881348,
"keypoints": [
[
395.9984130859375,
410.98577880859375,
0.8507718443870544
],
[
407.91241455078125,
433.11181640625,
0.8148055076599121
],
[
433.44244384765625,
452.684814453125,
0.905870795249939
],
[
462.37646484375,
434.8138122558594,
0.6390911340713501
],
[
472.5884704589844,
409.2837829589844,
0.9773337841033936
],
[
404.5084228515625,
390.561767578125,
0.9032452702522278
],
[
412.16741943359375,
389.7107849121094,
0.933011531829834
],
[
421.5284118652344,
392.2637939453125,
0.9517347812652588
],
[
448.76043701171875,
391.41278076171875,
0.9148523807525635
],
[
457.27044677734375,
390.561767578125,
1.00826096534729
],
[
465.78045654296875,
391.41278076171875,
0.9498611688613892
],
[
401.9554138183594,
408.43280029296875,
0.9429113864898682
],
[
410.4654235839844,
401.6247863769531,
0.9102410078048706
],
[
424.0814208984375,
407.581787109375,
0.9513795375823975
],
[
407.0614013671875,
415.24078369140625,
0.8516870737075806
],
[
413.8694152832031,
416.94281005859375,
0.898081362247467
],
[
421.5284118652344,
415.24078369140625,
0.9003926515579224
],
[
445.3564453125,
406.7308044433594,
0.9544098377227783
],
[
457.27044677734375,
400.7737731933594,
0.9248051643371582
],
[
466.6314392089844,
407.581787109375,
0.9653838872909546
],
[
448.76043701171875,
415.24078369140625,
0.9046895503997803
],
[
454.7174377441406,
416.94281005859375,
0.9548788070678711
],
[
461.52545166015625,
415.24078369140625,
0.9081595540046692
],
[
431.74041748046875,
422.8998107910156,
0.7558284997940063
],
[
425.7834167480469,
432.26080322265625,
0.9096529483795166
],
[
433.44244384765625,
431.4098205566406,
0.8496315479278564
],
[
441.9524230957031,
431.4098205566406,
0.8650717735290527
],
[
434.2934265136719,
442.4728088378906,
0.8822197914123535
]
]
},
{
"bbox": [
-0.28441810607910156,
550.624267578125,
37.297401428222656,
597.385986328125
],
"confidence": 0.020953258499503136,
"keypoints": [
[
8.688358306884766,
594.3263549804688,
0.6458055973052979
],
[
22.844738006591797,
596.1530151367188,
0.26714321970939636
],
[
40.65437698364258,
576.973388671875,
0.10307735204696655
],
[
25.58468246459961,
550.4872436523438,
0.1511426717042923
],
[
5.948413848876953,
549.1173095703125,
0.1640605330467224
],
[
1.8384971618652344,
591.1297607421875,
0.1419752985239029
],
[
2.295154571533203,
590.2164916992188,
0.39200711250305176
],
[
1.8384971618652344,
589.3031616210938,
0.35227757692337036
],
[
0.9251823425292969,
580.1699829101562,
0.35329490900039673
],
[
-1.3581047058105469,
567.8402709960938,
0.28866350650787354
],
[
-5.011363983154297,
564.6436767578125,
0.23211519420146942
],
[
10.058330535888672,
595.2396850585938,
0.6474231481552124
],
[
6.861728668212891,
592.9564208984375,
0.6926044225692749
],
[
4.578441619873047,
590.2164916992188,
0.5106884241104126
],
[
8.688358306884766,
593.8697509765625,
0.4455389380455017
],
[
6.405071258544922,
591.58642578125,
0.3936471939086914
],
[
5.948413848876953,
590.2164916992188,
0.4433344006538391
],
[
8.688358306884766,
576.06005859375,
0.7149522304534912
],
[
6.405071258544922,
568.7535400390625,
0.6254976987838745
],
[
4.578441619873047,
560.5337524414062,
0.6236202716827393
],
[
11.884960174560547,
574.6901245117188,
0.4325360059738159
],
[
15.081562042236328,
567.3836059570312,
0.5030096173286438
],
[
13.254932403564453,
563.7303466796875,
0.4349552392959595
],
[
16.451534271240234,
587.0198364257812,
0.3923119902610779
],
[
31.521228790283203,
589.3031616210938,
0.09235057234764099
],
[
33.80451583862305,
578.800048828125,
0.08187149465084076
],
[
31.521228790283203,
575.6034545898438,
0.15215378999710083
],
[
32.43454360961914,
577.88671875,
0.12120367586612701
]
]
}
],
"count": 2
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 KiB

View File

@@ -0,0 +1,158 @@
{
"filename": "image.jpg",
"timestamp": "20251213_222342_237104",
"detections": [
{
"bbox": [
482.8260498046875,
414.50177001953125,
912.8631591796875,
815.5737915039062
],
"confidence": 0.9999126195907593,
"keypoints": [
[
498.364501953125,
600.3392333984375,
0.8459852933883667
],
[
565.5578002929688,
709.5283813476562,
0.8534471988677979
],
[
716.7427368164062,
789.3203735351562,
0.9224226474761963
],
[
867.9276123046875,
663.3329467773438,
0.6302592754364014
],
[
905.723876953125,
549.9442749023438,
0.8217124938964844
],
[
510.9632568359375,
478.5513916015625,
0.8356815576553345
],
[
548.7594604492188,
512.1480712890625,
0.9392167329788208
],
[
599.1544189453125,
528.9463500976562,
0.9403426647186279
],
[
695.7448120117188,
512.1480712890625,
0.9012579917907715
],
[
750.33935546875,
482.7509765625,
0.9839559197425842
],
[
788.1356201171875,
440.7551574707031,
0.8938500881195068
],
[
506.763671875,
579.3413696289062,
0.8862940073013306
],
[
548.7594604492188,
558.3434448242188,
1.0185322761535645
],
[
611.753173828125,
587.740478515625,
0.8786236047744751
],
[
536.1607055664062,
621.337158203125,
0.8805925846099854
],
[
569.7573852539062,
625.5367431640625,
0.8982169032096863
],
[
607.5535888671875,
617.1375732421875,
0.9005286693572998
],
[
729.3414916992188,
566.7426147460938,
0.9095618724822998
],
[
788.1356201171875,
533.1459350585938,
0.9793227910995483
],
[
851.1293334960938,
537.3455200195312,
0.8977296352386475
],
[
754.5389404296875,
600.3392333984375,
0.8677295446395874
],
[
800.7343139648438,
600.3392333984375,
0.9660378098487854
],
[
838.5305786132812,
583.5408935546875,
0.9170674085617065
],
[
666.3477172851562,
667.5325317382812,
0.9459314942359924
],
[
687.3456420898438,
717.927490234375,
0.8501505255699158
],
[
691.5452270507812,
705.3287963867188,
0.8024829626083374
],
[
712.5431518554688,
722.1270751953125,
0.9779545068740845
],
[
704.1439819335938,
730.5262451171875,
0.8454795479774475
]
]
}
],
"count": 1
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 KiB

View File

@@ -0,0 +1,158 @@
{
"filename": "image.jpg",
"timestamp": "20251213_224604_490657",
"detections": [
{
"bbox": [
666.671875,
361.92169189453125,
1289.394287109375,
992.0623168945312
],
"confidence": 0.9998992681503296,
"keypoints": [
[
679.5778198242188,
593.9168090820312,
0.815975546836853
],
[
759.5761108398438,
796.989501953125,
0.7432810068130493
],
[
1005.7247924804688,
956.9861450195312,
1.0132157802581787
],
[
1233.412353515625,
753.9134521484375,
0.45971357822418213
],
[
1282.64208984375,
550.8408203125,
0.49694734811782837
],
[
747.2686767578125,
440.07391357421875,
0.4734005928039551
],
[
796.4984130859375,
446.22760009765625,
0.7051084041595459
],
[
839.574462890625,
440.07391357421875,
0.46059828996658325
],
[
1091.8768310546875,
489.30364990234375,
0.43089669942855835
],
[
1159.5677490234375,
464.68878173828125,
0.47972428798675537
],
[
1251.87353515625,
489.30364990234375,
0.42543619871139526
],
[
759.5761108398438,
569.3019409179688,
0.8370356559753418
],
[
814.9595947265625,
538.5333862304688,
0.9740267992019653
],
[
894.9578857421875,
556.9945068359375,
0.8742967844009399
],
[
796.4984130859375,
630.839111328125,
0.6651501655578613
],
[
839.574462890625,
636.9928588867188,
0.7213162183761597
],
[
882.6504516601562,
630.839111328125,
0.7616389393806458
],
[
1104.184326171875,
569.3019409179688,
0.8351671695709229
],
[
1178.0289306640625,
544.6870727539062,
0.9440107345581055
],
[
1227.2586669921875,
587.7631225585938,
0.6818649768829346
],
[
1110.3380126953125,
624.6854248046875,
0.7241061925888062
],
[
1159.5677490234375,
636.9928588867188,
0.6900973320007324
],
[
1196.489990234375,
630.839111328125,
0.6446655988693237
],
[
1005.7247924804688,
729.298583984375,
0.5004637837409973
],
[
956.4950561523438,
833.9118041992188,
1.0062881708145142
],
[
1018.0322265625,
833.9118041992188,
0.8692678213119507
],
[
1091.8768310546875,
815.4506225585938,
0.8040271997451782
],
[
1018.0322265625,
833.9118041992188,
0.8834856748580933
]
]
}
],
"count": 1
}