[{"data":1,"prerenderedAt":793},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-self-host-setup":102,"-getting-started-self-host-setup-surround":788},[4,23,37,47,61,79,93],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":22},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Set up self-hosting","\u002Fgetting-started\u002Fself-host-setup","1.getting-started\u002F2.self-host-setup",{"title":19,"path":20,"stem":21},"Hosted setup","\u002Fgetting-started\u002Fhosted-setup","1.getting-started\u002F3.hosted-setup",false,{"title":24,"icon":25,"path":26,"stem":27,"children":28,"page":22},"Configuration","i-lucide-settings","\u002Fconfiguration","2.configuration",[29,33],{"title":30,"path":31,"stem":32},"Bot configuration","\u002Fconfiguration\u002Fbot-config","2.configuration\u002F1.bot-config",{"title":34,"path":35,"stem":36},"Plugin configuration","\u002Fconfiguration\u002Fplugin-config","2.configuration\u002F2.plugin-config",{"title":38,"icon":39,"path":40,"stem":41,"children":42,"page":22},"Commands","i-lucide-terminal","\u002Fcommands","3.commands",[43],{"title":44,"path":45,"stem":46},"Slash commands","\u002Fcommands\u002Fslash-commands","3.commands\u002F1.slash-commands",{"title":48,"icon":49,"path":50,"stem":51,"children":52,"page":22},"Monitoring","i-lucide-activity","\u002Fmonitoring","4.monitoring",[53,57],{"title":54,"path":55,"stem":56},"Expose Prometheus metrics","\u002Fmonitoring\u002Fmetrics","4.monitoring\u002F1.metrics",{"title":58,"path":59,"stem":60},"Write JSON logs","\u002Fmonitoring\u002Fjson-logs","4.monitoring\u002F2.json-logs",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":22},"Telemetry and updates","i-lucide-shield-check","\u002Fprivacy","5.privacy",[67,71,75],{"title":68,"path":69,"stem":70},"Anonymous telemetry","\u002Fprivacy\u002Ftelemetry","5.privacy\u002F1.telemetry",{"title":72,"path":73,"stem":74},"Update check","\u002Fprivacy\u002Fupdate-check","5.privacy\u002F2.update-check",{"title":76,"path":77,"stem":78},"Website analytics","\u002Fprivacy\u002Fwebsite-analytics","5.privacy\u002F3.website-analytics",{"title":80,"icon":81,"path":82,"stem":83,"children":84,"page":22},"Server setup","i-lucide-server-cog","\u002Fserver-setup","6.server-setup",[85,89],{"title":86,"path":87,"stem":88},"Setup panel","\u002Fserver-setup\u002Fsetup-panel","6.server-setup\u002F1.setup-panel",{"title":90,"path":91,"stem":92},"Game features","\u002Fserver-setup\u002Fgame-features","6.server-setup\u002F2.game-features",{"title":94,"icon":95,"path":96,"stem":97,"children":98,"page":22},"FAQ","i-lucide-circle-help","\u002Ffaq","7.faq",[99],{"title":94,"path":100,"stem":101},"\u002Ffaq\u002Ffaq","7.faq\u002F1.faq",{"id":103,"title":15,"body":104,"description":781,"extension":782,"links":783,"meta":784,"navigation":785,"path":16,"seo":786,"stem":17,"__hash__":787},"docs\u002F1.getting-started\u002F2.self-host-setup.md",{"type":105,"value":106,"toc":771},"minimark",[107,116,767],[108,109,110,111,115],"p",{},"This guide installs DiscordMute on your own PC: BepInEx, the plugin and your own Discord bot. Everything runs locally. Apart from Discord itself, the only outbound requests are the ",[112,113,114],"a",{"href":69},"telemetry (on by default, can be turned off) and the update check",".",[117,118,120,125,128,158,165,175,179,204,207,210,216,223,228,246,249,393,401,475,479,542,546,562,564,721,725,728,753,759],"steps",{"level":119},"2",[121,122,124],"h2",{"id":123},"install-bepinex","Install BepInEx",[108,126,127],{},"DiscordMute requires BepInEx.",[129,130,131,135,152,155],"ul",{},[132,133,134],"li",{},"If you already use another Among Us mod that ships with BepInEx, you can usually skip this step.",[132,136,137,138],{},"Otherwise, download the 64-bit BepInEx build. Among Us is a 64-bit game on Epic Games and the Microsoft Store, and the current Steam version is 64-bit too, so all of them use the same file:\n",[129,139,140],{},[132,141,142,143],{},"Steam \u002F Epic Games \u002F Microsoft Store: ",[112,144,148],{"href":145,"rel":146},"https:\u002F\u002Fbuilds.bepinex.dev\u002Fprojects\u002Fbepinex_be\u002F735\u002FBepInEx-Unity.IL2CPP-win-x64-6.0.0-be.735%2B5fef357.zip",[147],"nofollow",[149,150,151],"code",{},"BepInEx-Unity.IL2CPP-win-x64-6.0.0-be.735+5fef357.zip",[132,153,154],{},"itch.io builds are still 32-bit and are not supported.",[132,156,157],{},"Extract it into your Among Us folder first. If you used an older 32-bit (x86) BepInEx before the Steam update, replace it with this build.",[108,159,160,161,164],{},"If the Steam version does not start or cannot connect to Steam correctly, make sure Steam is open. Also check that your Among Us folder contains a file named ",[149,162,163],{},"steam_appid.txt"," with this content:",[166,167,173],"pre",{"className":168,"code":170,"language":171,"meta":172},[169],"language-text","945360\n","text","",[149,174,170],{"__ignoreMap":172},[121,176,178],{"id":177},"install-the-discordmute-plugin","Install the DiscordMute plugin",[180,181,182,185,191,198,201],"ol",{},[132,183,184],{},"Open your Among Us folder.",[132,186,187,188,115],{},"Go to ",[149,189,190],{},"BepInEx\u002Fplugins",[132,192,193,194,197],{},"Copy ",[149,195,196],{},"DiscordMute.dll"," into that folder.",[132,199,200],{},"Start Among Us once.",[132,202,203],{},"Close Among Us again.",[108,205,206],{},"After the first launch, DiscordMute creates its own config folder inside BepInEx.",[108,208,209],{},"Example path:",[166,211,214],{"className":212,"code":213,"language":171,"meta":172},[169],"C:\\Steam\\steamapps\\common\\Among Us-Modded\\BepInEx\\DiscordMute\n",[149,215,213],{"__ignoreMap":172},[108,217,218,219,222],{},"Open ",[149,220,221],{},"config.json"," in that folder and configure it.",[224,225,227],"h3",{"id":226},"plugin-config","Plugin config",[108,229,230,231,234,235,238,239,242,243,115],{},"Every key is explained in ",[112,232,233],{"href":35},"plugin configuration",". The ones you must set are ",[149,236,237],{},"ip",", ",[149,240,241],{},"secret"," and ",[149,244,245],{},"exe",[108,247,248],{},"Example:",[166,250,254],{"className":251,"code":252,"language":253,"meta":172,"style":172},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"ip\": \"localhost\",\n  \"botPort\": 7264,\n  \"secret\": \"replace-this-with-your-own-secret\",\n  \"exe\": \"C:\\\\Path\\\\To\\\\DiscordBot\\\\start.bat\",\n  \"bridgeLogsToBotConsole\": false\n}\n","json",[149,255,256,265,292,310,330,372,387],{"__ignoreMap":172},[257,258,261],"span",{"class":259,"line":260},"line",1,[257,262,264],{"class":263},"sMK4o","{\n",[257,266,268,271,274,277,280,283,287,289],{"class":259,"line":267},2,[257,269,270],{"class":263},"  \"",[257,272,237],{"class":273},"spNyl",[257,275,276],{"class":263},"\"",[257,278,279],{"class":263},":",[257,281,282],{"class":263}," \"",[257,284,286],{"class":285},"sfazB","localhost",[257,288,276],{"class":263},[257,290,291],{"class":263},",\n",[257,293,295,297,300,302,304,308],{"class":259,"line":294},3,[257,296,270],{"class":263},[257,298,299],{"class":273},"botPort",[257,301,276],{"class":263},[257,303,279],{"class":263},[257,305,307],{"class":306},"sbssI"," 7264",[257,309,291],{"class":263},[257,311,313,315,317,319,321,323,326,328],{"class":259,"line":312},4,[257,314,270],{"class":263},[257,316,241],{"class":273},[257,318,276],{"class":263},[257,320,279],{"class":263},[257,322,282],{"class":263},[257,324,325],{"class":285},"replace-this-with-your-own-secret",[257,327,276],{"class":263},[257,329,291],{"class":263},[257,331,333,335,337,339,341,343,346,350,353,355,358,360,363,365,368,370],{"class":259,"line":332},5,[257,334,270],{"class":263},[257,336,245],{"class":273},[257,338,276],{"class":263},[257,340,279],{"class":263},[257,342,282],{"class":263},[257,344,345],{"class":285},"C:",[257,347,349],{"class":348},"sTEyZ","\\\\",[257,351,352],{"class":285},"Path",[257,354,349],{"class":348},[257,356,357],{"class":285},"To",[257,359,349],{"class":348},[257,361,362],{"class":285},"DiscordBot",[257,364,349],{"class":348},[257,366,367],{"class":285},"start.bat",[257,369,276],{"class":263},[257,371,291],{"class":263},[257,373,375,377,380,382,384],{"class":259,"line":374},6,[257,376,270],{"class":263},[257,378,379],{"class":273},"bridgeLogsToBotConsole",[257,381,276],{"class":263},[257,383,279],{"class":263},[257,385,386],{"class":263}," false\n",[257,388,390],{"class":259,"line":389},7,[257,391,392],{"class":263},"}\n",[394,395,396,400],"note",{},[397,398,399],"strong",{},"Update the plugin and the bot together."," A 3.x bot refuses 2.x plugins as outdated, and a 3.x plugin cannot connect to a 2.x bot.",[402,403,404,424,465],"warning",{},[108,405,406,419,420,423],{},[397,407,408,409,411,412,415,416,418],{},"Use double backslashes (",[149,410,349],{},") or forward slashes (",[149,413,414],{},"\u002F",") in the ",[149,417,245],{}," path."," A single backslash breaks the config file. The plugin then silently falls back to its defaults (including the secret ",[149,421,422],{},"change-me",") and the bot rejects the connection, even if your secrets are identical.",[425,426,427,440],"table",{},[428,429,430],"thead",{},[431,432,433,437],"tr",{},[434,435,436],"th",{},"Correct",[434,438,439],{},"Wrong",[441,442,443,456],"tbody",{},[431,444,445,451],{},[446,447,448],"td",{},[149,449,450],{},"\"C:\\\\Users\\\\Me\\\\DiscordBot\\\\start.bat\"",[446,452,453],{},[149,454,455],{},"\"C:\\Users\\Me\\DiscordBot\\start.bat\"",[431,457,458,463],{},[446,459,460],{},[149,461,462],{},"\"C:\u002FUsers\u002FMe\u002FDiscordBot\u002Fstart.bat\"",[446,464],{},[108,466,467,468,471,472,115],{},"If something doesn't work, search ",[149,469,470],{},"BepInEx\u002FLogOutput.log"," for ",[149,473,474],{},"Failed to read plugin config",[121,476,478],{"id":477},"discord-bot-setup","Discord bot setup",[180,480,481,487,496,504,515,539],{},[132,482,483,484,486],{},"Open the ",[149,485,362],{}," folder from the downloaded ZIP.",[132,488,489,490,493,494,115],{},"Rename ",[149,491,492],{},"config.example.json"," to ",[149,495,221],{},[132,497,498,499,115],{},"Create a Discord application and bot in the ",[112,500,503],{"href":501,"rel":502},"https:\u002F\u002Fdiscord.com\u002Fdevelopers\u002Fapplications",[147],"Discord Developer Portal",[132,505,506,507,510,511,514],{},"Under ",[397,508,509],{},"Bot",", turn on ",[397,512,513],{},"Server Members Intent",". It is the only privileged intent DiscordMute needs. Without it the bot stops right after starting.",[132,516,506,517,238,520,523,524,242,527,530,531,534,535,538],{},[397,518,519],{},"OAuth2",[397,521,522],{},"URL Generator",", pick the scopes ",[149,525,526],{},"bot",[149,528,529],{},"applications.commands"," and the ",[112,532,533],{"href":87},"permissions from the setup panel page"," (permission integer ",[149,536,537],{},"146877440","). Open the generated URL to add the bot to your server.",[132,540,541],{},"Fill in the bot config.",[224,543,545],{"id":544},"bot-config","Bot config",[108,547,230,548,234,551,238,554,238,557,242,560,115],{},[112,549,550],{"href":31},"bot configuration",[149,552,553],{},"token",[149,555,556],{},"clientId",[149,558,559],{},"guildId",[149,561,241],{},[108,563,248],{},[166,565,567],{"className":251,"code":566,"language":253,"meta":172,"style":172},"{\n  \"token\": \"YOUR_BOT_TOKEN\",\n  \"clientId\": \"YOUR_CLIENT_ID\",\n  \"guildId\": \"YOUR_GUILD_ID\",\n  \"channelIds\": [],\n  \"secret\": \"replace-this-with-your-own-secret\",\n  \"botIp\": \"localhost\",\n  \"botPort\": 7264,\n  \"databaseDialect\": \"sqlite\"\n}\n",[149,568,569,573,592,611,630,644,662,681,696,716],{"__ignoreMap":172},[257,570,571],{"class":259,"line":260},[257,572,264],{"class":263},[257,574,575,577,579,581,583,585,588,590],{"class":259,"line":267},[257,576,270],{"class":263},[257,578,553],{"class":273},[257,580,276],{"class":263},[257,582,279],{"class":263},[257,584,282],{"class":263},[257,586,587],{"class":285},"YOUR_BOT_TOKEN",[257,589,276],{"class":263},[257,591,291],{"class":263},[257,593,594,596,598,600,602,604,607,609],{"class":259,"line":294},[257,595,270],{"class":263},[257,597,556],{"class":273},[257,599,276],{"class":263},[257,601,279],{"class":263},[257,603,282],{"class":263},[257,605,606],{"class":285},"YOUR_CLIENT_ID",[257,608,276],{"class":263},[257,610,291],{"class":263},[257,612,613,615,617,619,621,623,626,628],{"class":259,"line":312},[257,614,270],{"class":263},[257,616,559],{"class":273},[257,618,276],{"class":263},[257,620,279],{"class":263},[257,622,282],{"class":263},[257,624,625],{"class":285},"YOUR_GUILD_ID",[257,627,276],{"class":263},[257,629,291],{"class":263},[257,631,632,634,637,639,641],{"class":259,"line":332},[257,633,270],{"class":263},[257,635,636],{"class":273},"channelIds",[257,638,276],{"class":263},[257,640,279],{"class":263},[257,642,643],{"class":263}," [],\n",[257,645,646,648,650,652,654,656,658,660],{"class":259,"line":374},[257,647,270],{"class":263},[257,649,241],{"class":273},[257,651,276],{"class":263},[257,653,279],{"class":263},[257,655,282],{"class":263},[257,657,325],{"class":285},[257,659,276],{"class":263},[257,661,291],{"class":263},[257,663,664,666,669,671,673,675,677,679],{"class":259,"line":389},[257,665,270],{"class":263},[257,667,668],{"class":273},"botIp",[257,670,276],{"class":263},[257,672,279],{"class":263},[257,674,282],{"class":263},[257,676,286],{"class":285},[257,678,276],{"class":263},[257,680,291],{"class":263},[257,682,684,686,688,690,692,694],{"class":259,"line":683},8,[257,685,270],{"class":263},[257,687,299],{"class":273},[257,689,276],{"class":263},[257,691,279],{"class":263},[257,693,307],{"class":306},[257,695,291],{"class":263},[257,697,699,701,704,706,708,710,713],{"class":259,"line":698},9,[257,700,270],{"class":263},[257,702,703],{"class":273},"databaseDialect",[257,705,276],{"class":263},[257,707,279],{"class":263},[257,709,282],{"class":263},[257,711,712],{"class":285},"sqlite",[257,714,715],{"class":263},"\"\n",[257,717,719],{"class":259,"line":718},10,[257,720,392],{"class":263},[121,722,724],{"id":723},"first-start","First start",[108,726,727],{},"Once both configs are set up:",[180,729,730,733,736,742],{},[132,731,732],{},"Start Among Us.",[132,734,735],{},"Create a lobby as host (online or LAN, not Freeplay). The plugin does nothing when you are not the host.",[132,737,738,739,741],{},"The Discord bot should start automatically through the ",[149,740,245],{}," path configured in the plugin.",[132,743,744,745,748,749,752],{},"Link your account with ",[149,746,747],{},"\u002Flink self"," (see ",[112,750,751],{"href":45},"commands",") and join a Discord voice channel.",[108,754,755,756,758],{},"DiscordMute mutes the voice channel the lobby host is sitting in, so the host must be linked. If the host can't be resolved, the bot falls back to the channels in ",[149,757,636],{},". The bot keeps a record of the players it muted and unmutes them again after a crash or restart. It only lifts mutes it applied itself and leaves mutes that were already in place alone.",[760,761,762,763,766],"tip",{},"Run ",[149,764,765],{},"\u002Ftestconnection"," in Discord to check that the bot can reach the plugin.",[768,769,770],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":172,"searchDepth":267,"depth":267,"links":772},[773,774,777,780],{"id":123,"depth":267,"text":124},{"id":177,"depth":267,"text":178,"children":775},[776],{"id":226,"depth":294,"text":227},{"id":477,"depth":267,"text":478,"children":778},[779],{"id":544,"depth":294,"text":545},{"id":723,"depth":267,"text":724},"Install BepInEx, the DiscordMute plugin and your own Discord bot.","md",null,{},true,{"title":15,"description":781},"fCbUk0s9AEgm0ASRRAE-m_oF9_Kw3vjjKjKtNYnGPk8",[789,791],{"title":11,"path":12,"stem":13,"description":790,"children":-1},"What DiscordMute is and how its two parts work together.",{"title":19,"path":20,"stem":21,"description":792,"children":-1},"Use the hosted DiscordMute bot. You run no bot yourself, you only add it to your server and set up the plugin.",1793322109998]