[{"data":1,"prerenderedAt":221},["ShallowReactive",2],{"slug-content-en-\u002Fprojects\u002Fdukcc-bot":3},{"kind":4,"item":5,"categories":72},"project",{"id":6,"title":7,"body":8,"dateEnd":51,"dateStart":52,"description":53,"extension":54,"featuredInCv":55,"link":56,"meta":57,"navigation":58,"path":59,"repo":56,"seo":60,"stem":61,"tags":62,"__hash__":71},"projects_en\u002Fprojects\u002Fdukcc-bot.md","dukcc-bot",{"type":9,"value":10,"toc":46},"minimark",[11,16,24],[12,13,15],"h2",{"id":14},"about-the-project","About the Project",[17,18,19,20,23],"p",{},"dukcc-bot is a Typescript-based Discord bot that provides many proprietary features for the PenguinNetwork.",[21,22],"br",{},"\nThese include",[25,26,27,31,34,37,40,43],"ul",{},[28,29,30],"li",{},"Automatic role assignment based on playtime",[28,32,33],{},"Role synchronization between game servers and Discord",[28,35,36],{},"Linking game accounts and Discord accounts",[28,38,39],{},"Automated management of giveaways based on users' playtime",[28,41,42],{},"Discord invite tracking system to assess advertising effectiveness",[28,44,45],{},"REST interfaces for integration with other services, such as the website",{"title":47,"searchDepth":48,"depth":48,"links":49},"",2,[50],{"id":14,"depth":48,"text":15},"9999-99","2025-01","A Typescript-based Discord bot + backend for the PenguinNetwork.","md",false,null,{},true,"\u002Fprojects\u002Fdukcc-bot",{"title":7,"description":53},"projects\u002Fdukcc-bot",[63,64,65,66,67,68,69,70],"typescript","deno","rest","docker","rabbitmq","sql","git","cicd","VtINLklgMBnUxv9GWLz0-L1jO37V6ksySQOM14BPMVU",[73,81,102,121,151,163,172,181],{"name":74,"items":75},"Databases",[76,78],{"slug":68,"name":77},"SQL (MySQL, MariaDB)",{"slug":79,"name":80},"sqlite","SQLite",{"name":82,"items":83},"Frontend",[84,87,90,93,96,99],{"slug":85,"name":86},"html5","HTML5",{"slug":88,"name":89},"css3","CSS3",{"slug":91,"name":92},"tailwindcss","Tailwind CSS",{"slug":94,"name":95},"bootstrap","Bootstrap",{"slug":97,"name":98},"uikit","UIkit",{"slug":100,"name":101},"extjs","Ext JS",{"name":103,"items":104},"JavaScript Ecosystem",[105,108,110,113,116,119],{"slug":106,"name":107},"javascript","JavaScript",{"slug":63,"name":109},"TypeScript",{"slug":111,"name":112},"nodejs","Node.js",{"slug":114,"name":115},"vuejs","Vue.js",{"slug":117,"name":118},"nuxt","Nuxt.JS",{"slug":64,"name":120},"Deno",{"name":122,"items":123},"Backend",[124,127,130,133,136,139,142,145,148],{"slug":125,"name":126},"php","PHP",{"slug":128,"name":129},"laravel","Laravel",{"slug":131,"name":132},"symfony","Symfony",{"slug":134,"name":135},"laminas","Laminas",{"slug":137,"name":138},"mezzio","Mezzio",{"slug":140,"name":141},"zend","Zend Framework",{"slug":143,"name":144},"wordpress","WordPress",{"slug":146,"name":147},"shopware","Shopware",{"slug":149,"name":150},"spryker","Spryker",{"name":152,"items":153},"Mobile",[154,157,160],{"slug":155,"name":156},"dart","Dart",{"slug":158,"name":159},"flutter","Flutter",{"slug":161,"name":162},"android","Android",{"name":164,"items":165},"Other Languages",[166,169],{"slug":167,"name":168},"java","Java",{"slug":170,"name":171},"python","Python",{"name":173,"items":174},"Operating Systems",[175,178],{"slug":176,"name":177},"linux","Linux",{"slug":179,"name":180},"windows","Windows",{"name":182,"items":183},"Other",[184,186,188,191,194,197,200,203,206,209,211,214,216,219],{"slug":69,"name":185},"Git",{"slug":66,"name":187},"Docker",{"slug":189,"name":190},"jenkins","Jenkins",{"slug":192,"name":193},"jvm","JVM",{"slug":195,"name":196},"aws","AWS",{"slug":198,"name":199},"cloudflare","Cloudflare",{"slug":201,"name":202},"nginx","Nginx",{"slug":204,"name":205},"redis","Redis",{"slug":207,"name":208},"networking","Networking",{"slug":67,"name":210},"RabbitMQ",{"slug":212,"name":213},"oidc","OIDC",{"slug":65,"name":215},"REST",{"slug":217,"name":218},"terraform","Terraform",{"slug":70,"name":220},"CI\u002FCD",1782416851469]