Effective date: September 22, 2026 Last updated: October 9, 2026
The operator's public email and business information notice has been corrected. Users' personal data processing categories, purposes, retention periods and rights, and the existing service terms, remain unchanged.
LUNA is an independent service providing conversation tools, cross-platform message relays, music, server management, games, and support features on KakaoTalk and Discord. This policy explains what information LUNA actually processes and stores.
1. Scope
This policy applies to the LUNA KakaoTalk bot, LUNA Discord bot, LUNA Dashboard, and the official website. Discord's and KakaoTalk's own processing is governed by each platform's policies. LUNA is not an official product made or endorsed by Discord or Kakao.
2. Information We Process or Store
Discord Bot and Server Management
- We use Discord user IDs, usernames, global display names, server nicknames, and avatar URLs for identification, permission checks, game progress, support, and management logs.
- We use server IDs and names, channel IDs and names, message IDs, role IDs and names, server owner IDs, member counts, and permission information for per-server settings and Dashboard features.
- We store server settings such as log channels, language, command prefix, forbidden-word rules, spam-detection thresholds, and log-retention period.
- We may store structured management logs for member joins and leaves, role grants and removals, and role changes, kicks, and timeouts performed through the Dashboard, including any reason entered. These records may contain target and actor IDs and display names, role information, timestamps, and outcomes.
- We do not permanently store the body of ordinary Discord message-create or message-edit events in the management-log database. To create a deletion log, however, we temporarily hold human-authored message content, author, channel, and attachment metadata in memory for up to six hours or 10,000 messages. If a message is deleted, its content and attachment ID, filename, type, size, URL, and image dimensions may be stored in the management-log database according to server settings.
- Message content is inspected in real time for forbidden-word and spam detection. The detection log does not store the message body; it stores only user, channel, and message IDs and the matched rule or reason.
- Luna Forest stores the Discord user ID and display name, game progress such as characters, items, currency, pets, battles, and trades, as well as interaction IDs, executed commands, and results.
- The music feature stores per-server controller channel and message IDs and Dashboard notice state in local files. Search text is not written to application logs; only technical information such as its length and processing result is logged. Voice-channel diagnostic logs may contain server, channel, and user IDs.
Support Tickets
- When a user DMs the LUNA Discord bot, we store the Discord user ID, ticket status and creation, update, and closure times, and source and relayed message IDs on both the user and operator sides in a local SQLite database. This prevents duplicate delivery and identifies the reply recipient.
- The inquiry text and attachments themselves are not stored in LUNA's Support Ticket database. They are relayed to the operator by Discord DM and may therefore remain as messages within Discord.
KakaoTalk Bot
- We process the KakaoTalk user ID or stable sender hash, nickname, chat-room ID and name, message ID, type, and timestamp to provide features and identify users and rooms.
- Messages in enabled rooms are stored with their content in PostgreSQL for the deleted-message lookup feature. For images, files, and emoticons, a message-type marker is stored instead of the actual file; the current code does not invoke this feature's media-file cache. Stored fields may include room, user, and message identifiers, nickname, message content, chat type, and open-chat link identifiers.
- In rooms where chat summary is enabled, the content, author ID and nickname, room ID, message ID, type, and timestamp of non-command messages are stored in a separate PostgreSQL summary buffer. Images, files, and emoticons are represented only by the Korean message-type markers
[이미지],[파일], and[이모티콘], not by the original media. - Missed-mention notifications store room, sender, and target user IDs, nicknames, message ID and content, and timestamp in a local JSON or PyKV store.
- Nickname history stores the KakaoTalk user ID, room ID, nickname, and change time in PyKV. When creating a Discord join or leave log, LUNA may compare a Discord server nickname with the current KakaoTalk nickname, and an exactly matching KakaoTalk nickname may be included in that Discord management log. There is no separate fixed mapping table between Discord accounts and KakaoTalk accounts.
- Join, leave, and kick statistics store the user ID, current nickname, room name, counts, latest time, and recent history in local JSON. Attendance stores the room name and nickname, latest attendance date, and attendance and absence counts in PyKV.
- LUNA may store thread-reply preferences, administrator and blocked-user IDs, chess rankings, user-entered coin holdings, game progress for fishing, mock stocks, and Luna Forest, and user display names in local JSON, SQLite, or PyKV.
- KakaoTalk command messages are excluded from the chat-summary buffer, but they are included in the seven-day deleted-message database. LUNA does not maintain a general-purpose command-usage table, though game features may store progress and command-processing results.
- Result images created by the image-generation feature are saved as files in the LUNA server's
res/temppicdirectory before being sent to KakaoTalk. The current implementation has no automatic expiration or cleanup process for this directory.
KakaoTalk ↔ Discord Relay
- The operator stores the routing relationship between KakaoTalk room IDs and names and Discord channel IDs and webhook addresses in local configuration. This maps rooms to channels, not individual user accounts.
- A message sent on KakaoTalk with the configured relay prefix may transmit the KakaoTalk nickname, message content, reply context, and images or attachments to the connected Discord channel.
- A message from a connected Discord channel may be transmitted to a KakaoTalk room with the Discord display name, content, reply-target name, and attachment, image, sticker, and embed information. Attachments may be downloaded to memory or a temporary directory during transmission, but no permanent message-mapping database is created.
- Message-identification keys used to prevent duplicate relay are kept in memory for 60 seconds under the current configuration.
Website and Dashboard
- The official website has no login and sets no cookies. It stores only the selected language in the browser's
localStorageunderluna-language, which may remain until the user clears browser storage. - Dashboard sign-in uses the Discord OAuth
identifyandguildsscopes to receive the Discord user ID, username, global display name, avatar, and the IDs of servers the user belongs to. The OAuth access token is discarded after retrieving this information and is not stored in a database. - The OAuth state cookie lasts up to ten minutes, and the Dashboard session cookie currently lasts 14 days. Both are set with
HttpOnly,Secure, andSameSite=Lax. Session user information is held only in server memory and disappears when the service restarts or the session expires. - The Dashboard processes the connection IP address in memory in a rolling window of up to 60 seconds for rate limiting, but does not store it in an application database or file. Hosting or proxy providers may process IP addresses and request information under their own policies while transmitting web traffic.
Operational Logs and Administrator Information
- For diagnosis and operation, technical logs may retain server, room, channel, message, and user IDs, feature outcomes, timestamps, exception types, and voice-state details in local log files and diagnostic JSON. Cross-platform relay logs may include a short part of a message used to determine whether it should be processed. Some logs rotate by size, but there is no single automatic deletion period applied to every component.
- The internal KakaoTalk administration page uses an administrator username, password hash, enabled status, and login cookies. This operator information is separate from the public-user Dashboard account.
3. How We Use Information
LUNA processes the information above only to:
- Provide bot commands, music, games, attendance, notifications, chat summaries, and Support Tickets
- Maintain per-server Discord settings, verify permissions, and provide management actions and audit logs
- Provide deleted-message lookup, forbidden-word and spam detection, and join and leave records
- Relay requested messages between KakaoTalk rooms and Discord channels
- Prevent duplicate requests, diagnose failures, and maintain security and service reliability
4. Storage and Retention
- Discord management settings and logs are stored on the LUNA server in
luna-dashboard.sqlite3. Management logs are configured per server for 7, 30, or 90 days, or no automatic deletion; the default for newly created server settings is currently 30 days. Cleanup runs about every six hours. - Discord Luna Forest data is stored in
luna-forest.sqlite3, Support Tickets inluna-support.sqlite3, and music controller state in local JSON. These records currently have no automatic expiration and may be deleted when a feature is reset, after a valid deletion request, or when the service ends. - KakaoTalk deleted-message data is stored in the PostgreSQL
luna_deleted_messagestable. Data older than seven days is deleted by cleanup that runs when a new message is processed or the data is queried. - The KakaoTalk chat-summary buffer is stored in the PostgreSQL
chat_summary_logtable. Once both summarization and delivery of the result succeed, the summarized range is deleted. If either fails, it is retained for another attempt. There is currently no separate time-based expiration for messages that are never summarized. - Missed-mention entries older than seven days are removed on the next read or write.
- Nickname history, join and leave statistics, attendance, game progress, user preferences, and blocked-user and administrator IDs currently have no common automatic expiration. They may be removed through feature-specific reset, operational deletion, a valid user request, or service shutdown.
- Image-generation result files are stored in
res/temppicon the LUNA server and currently have no automatic expiration. They may be removed through operational deletion, a valid user request, or service shutdown. - Deletion removes information from the primary database or file. Messages already delivered to Discord or KakaoTalk, and data held by those platforms, may need to be deleted separately on the relevant platform.
5. External Services and Disclosures
LUNA does not sell personal information. Information needed to provide a feature may be transmitted to:
- Discord: bot operation, OAuth login, server, member, and role management, DM Support Tickets, and webhook messages and attachments
- KakaoTalk and the Iris integration environment: receiving and sending KakaoTalk messages, room and member lookup, and delivery of content and attachments relayed from Discord
- Google Gemini: user-requested AI prompts, selected or replied-to images, and the room transcript submitted for chat summarization
- OpenRouter: prompts and selected images used for AI conversation and image analysis. The model provider selected by the current configuration may process them further.
- Naver, Open-Meteo, OpenWeather, the Korea Meteorological Administration, Yahoo Finance, Upbit, Binance, and Random Word API: values needed for lookup, such as a search term, place name, stock, or coin symbol. LUNA's code does not send a Discord or KakaoTalk user ID with these requests.
- YouTube and music-processing components: a music search term or URL and track information needed for playback
- Cloudflare and similar web-delivery or proxy environments: IP addresses and HTTP request information while web requests are transmitted
Information received by an external service may be processed under that service's terms and privacy policy.
6. Deletion and User Rights
Users may request access to, correction of, or deletion of their information. On Discord, send a DM to the LUNA bot to open a Support Ticket. To verify the requester and identify the records, we may ask for a Discord or KakaoTalk user ID and the relevant server or room.
A server administrator may request deletion of settings and server-specific management logs for a Discord server they manage. We may adjust the scope after reviewing the request where necessary to protect other users' rights, security, abuse prevention, or essential platform functionality. If retention becomes legally required or necessary for a dispute, only the required portion may be retained separately.
7. Security
LUNA uses password hashing, environment-based secret configuration, server-side sessions, secure cookies, origin checks, rate limits, and authorization checks. The system separates data so that OAuth access tokens and ordinary Discord message bodies are not stored permanently without need. No online service, however, can guarantee absolute security.
8. Children
LUNA is not designed specifically for children. Users must follow the age and parental-consent rules that apply to Discord and KakaoTalk. A parent or guardian who believes a child's information has been processed inappropriately may request deletion through a Support Ticket.
9. Changes to This Policy
We may update this policy when features, storage structures, or external services change. We will update the effective and last-updated dates on this page, and where practical announce material changes through the website or service notices.
10. Contact
For access, correction, deletion, or questions about this policy, send a direct message to the LUNA bot on Discord to open a Support Ticket. The official email address is local@babpul.kr. Business information is available in the official website footer.