{"id":28375584,"url":"https://github.com/neuwcodebox/discord-bot-become-human","last_synced_at":"2025-06-26T05:30:54.880Z","repository":{"id":241432767,"uuid":"806042311","full_name":"neuwcodebox/discord-bot-become-human","owner":"neuwcodebox","description":"디스코드 채널에서 자연스럽게 사람들의 대화에 참여하는 봇.","archived":false,"fork":false,"pushed_at":"2024-11-25T14:37:11.000Z","size":420,"stargazers_count":10,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-21T05:06:49.998Z","etag":null,"topics":["chatbot","deno","discord-bot","discordjs","openai"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neuwcodebox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-05-26T07:56:52.000Z","updated_at":"2024-12-20T08:28:22.000Z","dependencies_parsed_at":"2024-06-23T07:25:26.330Z","dependency_job_id":"12fe861e-55ea-4033-8997-c365c4732e11","html_url":"https://github.com/neuwcodebox/discord-bot-become-human","commit_stats":null,"previous_names":["neurowhai/discord-bot-become-human","neuwcodebox/discord-bot-become-human"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/neuwcodebox/discord-bot-become-human","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuwcodebox%2Fdiscord-bot-become-human","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuwcodebox%2Fdiscord-bot-become-human/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuwcodebox%2Fdiscord-bot-become-human/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuwcodebox%2Fdiscord-bot-become-human/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neuwcodebox","download_url":"https://codeload.github.com/neuwcodebox/discord-bot-become-human/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuwcodebox%2Fdiscord-bot-become-human/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262008717,"owners_count":23244241,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chatbot","deno","discord-bot","discordjs","openai"],"created_at":"2025-05-29T23:06:10.778Z","updated_at":"2025-06-26T05:30:54.866Z","avatar_url":"https://github.com/neuwcodebox.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Discord Bot Become Human\n\nOpenAI 대화 모델을 적절히 사용하여 디스코드 채널에서 자연스럽게 사람들의 대화에 참여하는 봇.\n\n![banner](assets/banner.png)\n\n**Multi-User Conversation**  \n![demo](assets/demo.png)\n\n**Reference message \u0026 Vision**  \n![demo2](assets/demo2.png)\n\n**Function Calls** (Weather, Search, Image Gen/Edit, Interpreter, Query DB)  \n![demo3](assets/demo3.png)\n\n## Features\n\n- [x] 정해진 채널에서 다자간 대화 수집.\n  - 수집 텍스트 : 작성자, 작성일, 내용, og:title/description\n  - 수집 이미지 : 첨부, 이모지, 스티커, HTTP URL, og:image\n  - 수집 파일(이미지 외) : 첨부\n- [x] 채널이 일정시간 이상 조용하거나 봇이 멘션되면 수집한 맥락을 가지고 대화 시작.\n- [x] 대화 시작 이후에는 멘션이 없어도 일정시간 뒤 응답.\n- [x] 응답을 할지 말지 판단.\n- [x] 대화를 중지할지 말지 판단.\n- [x] 대화 주제가 전환되었는지 판단.\n- [x] 대화 중지 또는 주제 전환시 이전 대화를 내부적으로 요약.\n- [x] 함수 호출 기능 사용하여 기능 확장.\n  - [x] 현재 날씨 및 예보 조회. ([Weatherbit](https://www.weatherbit.io/))\n  - [x] 인터넷 검색 또는 URL 읽기. ([Tavily AI](https://tavily.com/), [Jina AI](https://jina.ai/))\n  - [x] 이미지 생성. ([Stability AI](https://platform.stability.ai/), [RunPod Fooocus](https://github.com/NeuroWhAI/RunPod-Fooocus-API))\n  - [x] 코드 실행. ([Pyodide](https://pyodide.org/en/stable/))\n  - [x] 이전 대화 검색. ([Chroma](https://www.trychroma.com/))\n  - [x] 복잡한 질문에 대해 추론. ([OpenAI](https://platform.openai.com/docs/guides/reasoning))\n- [x] 이전 대화들을 정리하여 임베딩 계산 후 DB에 저장.\n- [x] 메모장 느낌으로 채널과 사람에 대해 기억하고 대화에 활용.\n- [ ] 좀 더 똑똑하게 대화 참여 및 나가기.\n\n## Config\n\n### .env\n\n```env\nCLIENT_ID={Discord App ID}\nDISCORD_TOKEN={Discord Bot Token}\nCHANNEL_WHITELIST={Discord Channel IDs : e.g. 321545304510012344,321545304510012345}\nOPENAI_API_KEY={OpenAI API Key}\nOPENAI_CHAT_MODEL={e.g. gpt-4o}\nOPENAI_REASONING_MODEL={e.g. o1-mini}\nOPENAI_EMBEDDING_MODEL={e.g. text-embedding-3-large}\nCHROMA_DB_URL={e.g. http://localhost:8000}\n\nWEATHER_BIT_API_KEY={Weatherbit API Key}\nTAVILY_API_KEY={Tavily API Key}\nSTABILITY_API_KEY={Stability API Key}\nRUNPOD_API_KEY={RunPod API Key}\nRUNPOD_ANIME_IMAGEN_ENDPOINT_ID={RunPod Anime Image Generation Endpoint ID : e.g. gblook0abcdefg}\nJINA_API_KEY={Jina API Key}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneuwcodebox%2Fdiscord-bot-become-human","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneuwcodebox%2Fdiscord-bot-become-human","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneuwcodebox%2Fdiscord-bot-become-human/lists"}