Overview
Notice events inform your bot about various activities and changes in QQ. These events help you monitor group dynamics, friend interactions, and other important activities.
Common Fields
All notice events share these fields:
Unix timestamp (in seconds) when the event occurred
Always "notice" for notice events
Type of notice (see individual events below)
Group Upload
Triggered when a file is uploaded to a group.
QQ number of the uploader
Example
{
"time" : 1709641234 ,
"self_id" : 123456789 ,
"post_type" : "notice" ,
"notice_type" : "group_upload" ,
"group_id" : 12345678 ,
"user_id" : 987654321 ,
"file" : {
"id" : "file_id_123" ,
"name" : "document.pdf" ,
"size" : 1048576 ,
"busid" : 102
}
}
Group Admin
Triggered when a group member’s admin status changes.
"set" - User was promoted to admin
"unset" - User was demoted from admin
QQ number of the affected user
Example
{
"time" : 1709641234 ,
"self_id" : 123456789 ,
"post_type" : "notice" ,
"notice_type" : "group_admin" ,
"sub_type" : "set" ,
"group_id" : 12345678 ,
"user_id" : 987654321
}
Group Member Decrease
Triggered when a member leaves or is removed from a group.
"leave" - Member left voluntarily
"kick" - Member was kicked
"kick_me" - The bot was kicked
"disband" - Group was disbanded
QQ number of the member who left
QQ number of the operator (who kicked/disbanded, or the member themselves if they left)
Example: Member Left
{
"time" : 1709641234 ,
"self_id" : 123456789 ,
"post_type" : "notice" ,
"notice_type" : "group_decrease" ,
"sub_type" : "leave" ,
"group_id" : 12345678 ,
"user_id" : 987654321 ,
"operator_id" : 987654321
}
Example: Member Kicked
{
"time" : 1709641234 ,
"self_id" : 123456789 ,
"post_type" : "notice" ,
"notice_type" : "group_decrease" ,
"sub_type" : "kick" ,
"group_id" : 12345678 ,
"user_id" : 987654321 ,
"operator_id" : 111111111
}
Group Member Increase
Triggered when a new member joins a group.
"approve" - Join request was approved
"invite" - Member was invited
QQ number of the new member
QQ number of the operator (who approved or invited)
Example
{
"time" : 1709641234 ,
"self_id" : 123456789 ,
"post_type" : "notice" ,
"notice_type" : "group_increase" ,
"sub_type" : "invite" ,
"group_id" : 12345678 ,
"user_id" : 987654321 ,
"operator_id" : 111111111
}
Group Ban
Triggered when a member is banned or unbanned in a group.
"ban" - Member was banned
"lift_ban" - Member was unbanned
QQ number of the affected member
QQ number of the admin who performed the action
Ban duration in seconds (0 for unban)
Example
{
"time" : 1709641234 ,
"self_id" : 123456789 ,
"post_type" : "notice" ,
"notice_type" : "group_ban" ,
"sub_type" : "ban" ,
"group_id" : 12345678 ,
"user_id" : 987654321 ,
"operator_id" : 111111111 ,
"duration" : 86400
}
Friend Add
Triggered when a new friend is added.
QQ number of the new friend
Example
{
"time" : 1709641234 ,
"self_id" : 123456789 ,
"post_type" : "notice" ,
"notice_type" : "friend_add" ,
"user_id" : 987654321
}
Group Message Recall
Triggered when a message is recalled in a group.
QQ number of the message sender
QQ number of the operator who recalled the message
ID of the recalled message
Example
{
"time" : 1709641234 ,
"self_id" : 123456789 ,
"post_type" : "notice" ,
"notice_type" : "group_recall" ,
"group_id" : 12345678 ,
"user_id" : 987654321 ,
"operator_id" : 111111111 ,
"message_id" : 123456
}
Friend Message Recall
Triggered when a friend recalls a message.
ID of the recalled message
Example
{
"time" : 1709641234 ,
"self_id" : 123456789 ,
"post_type" : "notice" ,
"notice_type" : "friend_recall" ,
"user_id" : 987654321 ,
"message_id" : 123456
}
Poke/Nudge
Triggered when someone pokes/nudges in a chat.
Group number (only for group pokes)
QQ number of the sender (for friend pokes)
Example: Group Poke
{
"time" : 1709641234 ,
"self_id" : 123456789 ,
"post_type" : "notice" ,
"notice_type" : "notify" ,
"sub_type" : "poke" ,
"group_id" : 12345678 ,
"user_id" : 987654321 ,
"target_id" : 123456789
}
Profile Like
Triggered when someone likes the bot’s profile.
QQ number of the person who liked
Nickname of the person who liked
Example
{
"time" : 1709641234 ,
"self_id" : 123456789 ,
"post_type" : "notice" ,
"notice_type" : "notify" ,
"sub_type" : "profile_like" ,
"operator_id" : 987654321 ,
"operator_nick" : "Alice" ,
"times" : 10
}
Group Message Emoji Like
Triggered when someone reacts to a group message with an emoji.
ID of the message being reacted to
Array of emoji reactions Number of this emoji reaction
Whether the emoji was added (true) or removed (false)
Example
{
"time" : 1709641234 ,
"self_id" : 123456789 ,
"post_type" : "notice" ,
"notice_type" : "group_msg_emoji_like" ,
"group_id" : 12345678 ,
"user_id" : 987654321 ,
"message_id" : 123456 ,
"likes" : [
{
"emoji_id" : "1" ,
"count" : 3
}
],
"is_add" : true
}
Group Card Change
Triggered when a member’s group card (nickname) changes.
Example
{
"time" : 1709641234 ,
"self_id" : 123456789 ,
"post_type" : "notice" ,
"notice_type" : "group_card" ,
"group_id" : 12345678 ,
"user_id" : 987654321 ,
"card_new" : "New Nickname" ,
"card_old" : "Old Nickname"
}
Handling Notice Events
Basic Notice Handler
function handleNotice ( event ) {
switch ( event . notice_type ) {
case 'group_upload' :
console . log ( ` ${ event . user_id } uploaded ${ event . file . name } to group ${ event . group_id } ` );
break ;
case 'group_increase' :
console . log ( `Welcome new member ${ event . user_id } to group ${ event . group_id } !` );
// You can send a welcome message here
break ;
case 'group_decrease' :
if ( event . sub_type === 'kick_me' ) {
console . log ( `Bot was kicked from group ${ event . group_id } ` );
} else {
console . log ( `Member ${ event . user_id } left group ${ event . group_id } ` );
}
break ;
case 'group_recall' :
console . log ( `Message ${ event . message_id } was recalled in group ${ event . group_id } ` );
// You can log the recalled message if you saved it
break ;
case 'friend_add' :
console . log ( `New friend added: ${ event . user_id } ` );
// Send a greeting message
break ;
case 'notify' :
if ( event . sub_type === 'poke' && event . target_id === event . self_id ) {
console . log ( ` ${ event . user_id } poked the bot!` );
// React to the poke
} else if ( event . sub_type === 'profile_like' ) {
console . log ( ` ${ event . operator_nick } liked the profile ${ event . times } times` );
}
break ;
}
}
Welcome New Members
if ( event . notice_type === 'group_increase' ) {
// Send welcome message
await sendGroupMessage ( event . group_id , [
{
type: 'at' ,
data: { qq: event . user_id . toString () }
},
{
type: 'text' ,
data: { text: ' Welcome to the group!' }
}
]);
}
Monitor File Uploads
if ( event . notice_type === 'group_upload' ) {
const fileSizeMB = ( event . file . size / 1024 / 1024 ). toFixed ( 2 );
console . log ( `File uploaded: ${ event . file . name } ( ${ fileSizeMB } MB)` );
// Notify if file is too large
if ( event . file . size > 50 * 1024 * 1024 ) { // 50 MB
await sendGroupMessage ( event . group_id , 'Warning: Large file uploaded!' );
}
}
Track Message Recalls
// Store messages for recall tracking
const messageCache = new Map ();
// When receiving a message
if ( event . post_type === 'message' ) {
messageCache . set ( event . message_id , {
content: event . raw_message ,
sender: event . user_id ,
time: event . time
});
}
// When message is recalled
if ( event . notice_type === 'group_recall' ) {
const original = messageCache . get ( event . message_id );
if ( original ) {
console . log ( `Recalled message: " ${ original . content } "` );
// Optionally notify about the recall
}
}
Next Steps