<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Autocode</title>
    <description>The latest articles on DEV Community by Autocode (@autocode).</description>
    <link>https://dev.to/autocode</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F7347%2Fa4dfbc1e-eabf-48a1-b87e-1d5e70ee094f.jpg</url>
      <title>DEV Community: Autocode</title>
      <link>https://dev.to/autocode</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/autocode"/>
    <language>en</language>
    <item>
      <title>4 ways to verify your Discord community's members</title>
      <dc:creator>Jacklyn Biggin</dc:creator>
      <pubDate>Wed, 09 Aug 2023 17:29:08 +0000</pubDate>
      <link>https://dev.to/autocode/4-ways-to-verify-your-discord-communitys-members-e67</link>
      <guid>https://dev.to/autocode/4-ways-to-verify-your-discord-communitys-members-e67</guid>
      <description>&lt;p&gt;As companies grow their community on Discord, they often run into some growth-related challenges. One of these challenges is &lt;a href="https://dev.to/autocode/how-we-moderate-a-30000-member-discord-server-at-autocode-2l26"&gt;moderating a community at scale&lt;/a&gt;, and often, a way to make this easier to deal with is to add verification steps that new members must complete before they can interact with the community. However, despite often seeming like a quick win, sometimes these systems can do more harm than good.&lt;/p&gt;

&lt;p&gt;Here at &lt;a href="https://autocode.com"&gt;Autocode&lt;/a&gt;, we’ve built a community of over 30,000 people looking to build bots, APIs, and automations. In this article, I’m going to talk about some of the ways we verify our users to cut down on spam, and share the best practices that you should follow when adding a verification system to your Discord server.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Iv6461JR92k"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Discord’s Verification Level Feature
&lt;/h2&gt;

&lt;p&gt;One quick win that I recommend enabling on your server is Discord’s &lt;em&gt;Verification Level&lt;/em&gt; feature. You can find it by opening your server’s settings, clicking &lt;em&gt;Safety Setup&lt;/em&gt;, and choosing &lt;em&gt;DM and Spam Protection&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N4-P5ta5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jdc5hrz3umh6umakam9w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N4-P5ta5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jdc5hrz3umh6umakam9w.png" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Verification Level system won’t cut down on determined bad actors. However, it &lt;em&gt;can&lt;/em&gt; block unsophisticated attackers, such as newly created bot accounts, and prevent people from immediately being able to make a new account and rejoin your server if you just banned them.&lt;/p&gt;

&lt;p&gt;I recommend setting this to &lt;em&gt;medium&lt;/em&gt; at a minimum. I’ve found it’s a good balance between allowing new Discord users to engage with our community while throttling a new account’s ability to cause issues. The &lt;em&gt;highest&lt;/em&gt; setting can be useful to temporarily enable if you’re actively being &lt;a href="https://support.discord.com/hc/en-us/articles/10989121220631-How-to-Protect-Your-Server-from-Raids-101#:~:text=On%20Discord%2C%20a%20raid%20is,our%20Terms%20of%20Service%20guidelines."&gt;raided&lt;/a&gt;, but I’d recommend not leaving it enabled for long periods of time, as some users aren’t comfortable with connecting their phone number to their Discord account. &lt;/p&gt;

&lt;h2&gt;
  
  
  Requiring new members to accept your rules
&lt;/h2&gt;

&lt;p&gt;Another basic type of verification I recommend adding to your Discord server is verifying that your members have read your rules before allowing them to chat. Conveniently, Discord offers this feature out of the box - it can be enabled using the toggle under &lt;em&gt;Verification Level&lt;/em&gt; toggle in Discord’s safety setup.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_bQkCtDB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/orr0hgbo7ql53lma9nzp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_bQkCtDB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/orr0hgbo7ql53lma9nzp.png" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While this step is unlikely to stop someone acting maliciously, it &lt;em&gt;can&lt;/em&gt; cut down on people doing things that they didn’t realize was against the rules. For example, we saw a slight decrease in the number of people trying to share server invite links and self-promoting their own content in our server after enabling this feature.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;many&lt;/strong&gt; servers, enabling these two settings (plus cultivating a healthy community) can be enough to deter bad behavior. You should only add further required verification steps if moderation remains a challenge, as new members are less likely to activate if you require them to complete a ton of steps before they’ve had the chance to get familiar with your community.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding email verification to your Discord server
&lt;/h2&gt;

&lt;p&gt;Requiring users to verify their email address to access certain features on your Discord server can help you tie a Discord account to a user’s identity. While it is possible for bad actors to spin up multiple email addresses, by simply being a less easy server to target than alternatives, you can cut down on malicious actions against your community.&lt;/p&gt;

&lt;p&gt;Email verification can also help you offer experiences beyond just Discord, such as providing the option for your members to sign up for your email newsletter when they verify their email address. Additionally, if you’re creating a semi-public server (such as one for a ticketed event), email verification can be a great way to check whether a user should actually have access to your server at all!&lt;/p&gt;

&lt;p&gt;We’ve built a &lt;a href="https://omg.ac/email-verification"&gt;email verification system that you can add to your Discord server in minutes&lt;/a&gt;. The code for this system is fully customizable, so you modify it to fit your community’s needs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dCc7fizP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y7nl5aqnzk4rhbqpw02d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dCc7fizP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y7nl5aqnzk4rhbqpw02d.png" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, if you’re building a public community on Discord, I recommend &lt;em&gt;not&lt;/em&gt; requiring all your members to verify their email address, as adding this level of friction can inhibit your ability to grow your community. Rather, I recommend adding email verification as an optional step that members can complete to unlock features that need higher trust, such as the ability to use external emojis or send links. Additionally, you can recognise members who have verified their email address with a special name color or icon next to their name, helping them build social proof within your community. &lt;/p&gt;

&lt;h2&gt;
  
  
  Allowing members to link external accounts your Discord server
&lt;/h2&gt;

&lt;p&gt;The final (and most involved) method of user verification that I want to talk about is allowing members to link their Discord account to their account on your service. For example, here at Autocode, we require users to link their Discord account to their Autocode account and verify that they’ve read our &lt;a href="https://autocode.com/guides/how-to-build-a-discord-bot/"&gt;&lt;em&gt;How to build a Discord bot&lt;/em&gt; guide&lt;/a&gt; in order to send messages in our support channel. We added this feature as we were being flooded with basic questions that the guide answered, and adding friction to sending messages in this channel helped create a better experience for our community in the support channel.&lt;/p&gt;

&lt;p&gt;When building this system, we wanted to make sure that we weren’t adding too many barriers between new members and our support channel. One issue that we ran into was that if unverified members didn’t have permission to talk in the support channel, they’d not have any context about &lt;em&gt;why&lt;/em&gt; that is the case. So, rather than using Discord’s built-in permissions system, we allow anyone to send messages to the channel, but automatically delete messages from unverified users and provide them with information about how they can get verified. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iNlE6Gc4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ljtruozsd85akvlvds7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iNlE6Gc4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ljtruozsd85akvlvds7.png" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To do this, we leverage a &lt;strong&gt;Verified Role&lt;/strong&gt; and some custom logic to listen for message events in our Support channel, so that only messages by users without that role would be filtered out. In order to get the role, we built a Discord OAuth linking flow that appears at the end of our guide for them to click and receive the appropriate role in Discord.&lt;/p&gt;

&lt;p&gt;Some larger companies require community members to link an account to access any features on their Discord server. For example, &lt;a href="https://discord.gg/OpenAI"&gt;OpenAI’s Discord server&lt;/a&gt; recently started requiring all members to link their OpenAI accounts to their Discord accounts to even be able to &lt;em&gt;see&lt;/em&gt; any of their server’s channels. This is unlikely to be a good fit for most communities, especially ones that are focused on growth, as this level of friction is likely to cause a large amount of onboarding attrition. However, if you are seeing explosive growth and moderating your server is becoming unmanageable, it is a step you may wish to consider.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In terms of member verification, what works for one community won’t necessarily work well for another. Before adding barriers to participate in your community, we recommend considering what is truly necessary.&lt;/p&gt;

&lt;p&gt;Allowing server members to verify their email or link an external account in order to access additional features on your server can help create an engaged and safe community. However, I’d recommend not gating too much of your server behind a verification step that requires someone to complete an action outside of Discord, especially if you’re focused on growing and engaging your community.&lt;/p&gt;

&lt;p&gt;If you found this article useful, why not &lt;a href="https://dev.to/autocode/how-we-moderate-a-30000-member-discord-server-at-autocode-2l26"&gt;learn more about how we moderate our Discord server&lt;/a&gt;?&lt;/p&gt;

</description>
      <category>devrel</category>
      <category>community</category>
      <category>discord</category>
    </item>
    <item>
      <title>How we moderate a 30,000+ member Discord server at Autocode</title>
      <dc:creator>Jacklyn Biggin</dc:creator>
      <pubDate>Fri, 04 Aug 2023 13:41:54 +0000</pubDate>
      <link>https://dev.to/autocode/how-we-moderate-a-30000-member-discord-server-at-autocode-2l26</link>
      <guid>https://dev.to/autocode/how-we-moderate-a-30000-member-discord-server-at-autocode-2l26</guid>
      <description>&lt;p&gt;&lt;a href="https://autocode.com"&gt;Autocode&lt;/a&gt; is a developer platform designed to make it easy to build APIs, automations, and bots. We’ve built &lt;a href="https://discord.gg/autocode"&gt;a community of over 30,000 developers&lt;/a&gt; on Discord. This community is at the heart of what we do, but moderating at such a scale can be challenging.&lt;/p&gt;

&lt;p&gt;We’ve learned a &lt;em&gt;lot&lt;/em&gt; about Discord server moderation over the last two years, and in this article, I’m going to share our five best practices to follow when moderating a Discord server.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/5sd0ndT14Iw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  1: Use Discord’s built in safety tools
&lt;/h2&gt;

&lt;p&gt;Discord provides a surprisingly robust set of moderation tools out of the box. While they’re often not powerful enough on their own - especially for larger servers - they can provide a good first line of defense against bad actors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RGbXxUYE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hp1cl1ufx4lzto5zenu7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RGbXxUYE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hp1cl1ufx4lzto5zenu7.png" alt="Discord's safety tools are surprisingly effective" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The features that we’ve found most powerful are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Raid Protection&lt;/strong&gt;, which can protect your server against floods of compromised accounts joining to spam it with malicious links.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verification Level&lt;/strong&gt;, which can be found under the &lt;em&gt;DM and Spam Protection&lt;/em&gt; setting. We have this set to medium, meaning that accounts which have been registered on Discord for less than five minutes will be unable to talk on our server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AutoMod&lt;/strong&gt; features, especially the built in filters you can enable under the &lt;em&gt;Commonly Flagged Words&lt;/em&gt; option. We found that enabling those filters and the &lt;em&gt;Block Spam Content&lt;/em&gt;  setting blocked around half of the spam content posted in our server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explicit image filter&lt;/strong&gt;, available under the &lt;em&gt;AutoMod&lt;/em&gt; settings, because although it does false positive sometimes, people can be wild on the internet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, we have found that the built-in features alone aren’t enough for a server of our size. For example, while you &lt;em&gt;can&lt;/em&gt; setup AutoMod rules using Regex, you’re limited to a maximum of ten filters. That brings us onto our next point…&lt;/p&gt;

&lt;h2&gt;
  
  
  2: Build your own moderation tools
&lt;/h2&gt;

&lt;p&gt;There’s no one-size-fits-all solution to Discord moderation, so building your own tools that fit into your community can be a good next step once you outgrow Discord’s built-in features. If you’re curious about how you can start building a moderation bot, check out our &lt;a href="https://autocode.com/guides/how-to-build-a-discord-moderation-bot/"&gt;&lt;em&gt;how to build a Discord moderation bot&lt;/em&gt; guide&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;One issue that we ran into was that people were using non-English alphabets to bypass our AutoMod rules. To counter this, we added a function to &lt;a href="https://en.wikipedia.org/wiki/Transliteration"&gt;transliterate&lt;/a&gt; the content of all messages into a standard English alphabet, and then run the content through a bunch of &lt;a href="https://regexlearn.com/learn/regex101"&gt;regular expressions&lt;/a&gt;. The regular expressions look for content such as malicious links, free nitro scams, and other terms that indicate a message was posted by a bad actor. If there’s a match, we automatically delete the message and mute the user. The content that caused the moderation action is automatically logged, and we use the logs to tweak the filters to reduce false-positives.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--04RhKneD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vbnxj1jyz9z6irlgw6js.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--04RhKneD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vbnxj1jyz9z6irlgw6js.png" alt="Transliteration helped us defeat spambots" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building these custom tools in-house also helps us cater them to our community’s needs. For example, we normally block all Discord server invite links from being posted in our server, as we find them to be a magnet for spam. However, we once wanted to do some market research on what kind of servers our users were part of.&lt;/p&gt;

&lt;p&gt;As we custom-built our moderation tools, we were able to modify them to exclude that channel from the filter. However, we then ran into the issue that spambots were posting links to some &lt;em&gt;spicy&lt;/em&gt; servers in that channel. So, we modified our filter again to automatically scan the titles of any Discord invite links posted, and to delete messages containing anything age-restricted or indicative of spam. Spambots defeated! 🎉&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UZnUaq__--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p7avnlytnwwtzqasdbjr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UZnUaq__--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p7avnlytnwwtzqasdbjr.png" alt="Using custom tools, we were able to quickly respond to threats" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3: Empower your community members with custom tools
&lt;/h2&gt;

&lt;p&gt;Empowering community members can be a vital part of your moderation strategy. How this looks depends on your community. Here at Autocode, we have a small team, so we empowered trusted community members to be able to mute bad actors. All mutes, and metadata relating to the cause of the mute (such as message content) are logged, so our team can review them if something doesn’t seem quite right. We use muting, rather than handing out the ability to kick or ban users, as it is less destructive if a bad actor did manage to gain access to it.&lt;/p&gt;

&lt;p&gt;Other teams might find that involving community members with moderation looks different. Sometimes, something as simple as providing tools for users to report malicious activity to your staff team can be enough. On Autocode’s community server, we provide this option through a slash command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x-J0wujr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d6iksx3ozhgm2j6zkam9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x-J0wujr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d6iksx3ozhgm2j6zkam9.png" alt="Empowering our community with reporting tools" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4: Build only what your community needs in the moment
&lt;/h2&gt;

&lt;p&gt;Every community has different needs, and those needs will change as your community grows. Therefore, it’s important to not start building processes before they’re needed, and to always ask yourself &lt;em&gt;“why?”&lt;/em&gt; whenever you add another tool to your moderation toolkit. Just because a feature is available, doesn’t mean you need to - or necessarily should - use it.&lt;/p&gt;

&lt;p&gt;The people who know what you need best are your community members, especially the most active ones. They’re probably seeing patterns in spam or malicious content that’s slipping through the cracks that you’re not, or are able to identify more covert behavior coming from bad actors, such as stirring drama up via direct messages. Create a way to communicate directly with these members - we do this by automatically assigning a &lt;em&gt;“Contributor”&lt;/em&gt; role to anyone who is active within Autocode’s ecosystem, and asking them questions via a private channel.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pxd2JYnW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/emg91iehpner8xtdew98.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pxd2JYnW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/emg91iehpner8xtdew98.png" alt="Contributors can quickly flag issues to our team" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5: Build trust by being present
&lt;/h2&gt;

&lt;p&gt;Building and utilizing moderation tools can be useful, but ultimately, the most important part of any moderation strategy is building trust. Trust building can have a &lt;strong&gt;ton&lt;/strong&gt; of benefits, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Making it possible to catch issues within your community earlier, as community members proactively reach out and give you a heads up&lt;/li&gt;
&lt;li&gt;Reducing the need for hands-on moderation from your team, as the community will partially moderate itself&lt;/li&gt;
&lt;li&gt;Providing opportunities to involve key community members beyond just moderation - we’ve been able to involve them in lots of things, from freelance contracts to involvement in content&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The easiest way to build trust is to simply be present within your community. By becoming a recognizable face, your community members will get used to communicating with you. Beyond that, it’s important to be consistent - don’t give certain people unwarranted special treatment, and be consistent if you do have to kick or ban anyone.&lt;/p&gt;

&lt;p&gt;We take things a step further by opening up our Discord audit log to the most active members of our community. This provides a level of transparency, and allows them to verify that we’re not doing anything shady in terms of banning people or deleting messages. In fact, we’ve historically opened up our audit log to &lt;em&gt;everyone&lt;/em&gt; when controversial decisions were made that some community members disagreed with. This helped put out flames on burning fires - it’s difficult to be angry at people when you can see that they’re telling the truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;p&gt;I hope you learned something new today! If you have any questions, please don’t hesitate to reach out. And, if you’re ready to jump into building your first Discord bot to help moderate your community, our &lt;a href="https://autocode.com/guides/how-to-build-a-discord-bot/"&gt;&lt;em&gt;how to build a Discord bot&lt;/em&gt; guide&lt;/a&gt; will get you up and running in just a few minutes.&lt;/p&gt;

&lt;p&gt;Good luck with growing your community!&lt;/p&gt;

</description>
      <category>devrel</category>
      <category>community</category>
      <category>discord</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How we run hackathons inside Discord at Autocode</title>
      <dc:creator>Jacklyn Biggin</dc:creator>
      <pubDate>Wed, 26 Jul 2023 15:51:05 +0000</pubDate>
      <link>https://dev.to/autocode/how-we-run-hackathons-inside-discord-at-autocode-45jf</link>
      <guid>https://dev.to/autocode/how-we-run-hackathons-inside-discord-at-autocode-45jf</guid>
      <description>&lt;p&gt;Over at &lt;a href="https://autocode.com" rel="noopener noreferrer"&gt;Autocode&lt;/a&gt;, we make it really easy to build APIs and Discord bots. We’ve found a lot of success in running hackathons focused on our Discord community. Historically, we’ve been able to use these hackathons to build awareness of new APIs on our platform, quickly find bugs in existing APIs, and build up a library of content that new users can reference. Today, I’m going to show you how we run our hackathons inside Discord, and how you can add the tools we built to your Discord server so you can too!&lt;/p&gt;

&lt;h2&gt;
  
  
  How we run hackathons
&lt;/h2&gt;

&lt;p&gt;We run a Discord server with over 30,000 members, most of which are Discord bot builders or another type of developer. We were looking for ways to engage with this audience to improve activity within our Discord server, and found that running hackathons inside our Discord server was a great first step to connect with them.&lt;/p&gt;

&lt;p&gt;Back when we built our hackathon system, we wanted a lightweight submission system that didn’t require any additional account creation. We also wanted to ensure that our participants were able to spend most of their time building their project, rather than focusing on writing really long and in-depth descriptions for their submission page. Therefore, we built a system that focuses on driving engagement inside Discord while also allowing us to set up new hackathons in minutes to respond to the needs of our community.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr297mqwnhndb9jn77259.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr297mqwnhndb9jn77259.png" alt="Users are instantly recognised for their submissions"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When users submit to one of our hackathons, we automatically send a public message to our Discord server. This helps recognise the people who are submitting, create a conversation point, and encourages others to submit to gain the same recognition. We do, however, keep the contents of each project secret (except for the winners), allowing individual community members to decide whether they’d like to share their creation with others, or if they’re more comfortable with keeping it private. This helps us build a more inclusive community, and lowers the perceived barrier to entry for new participants.&lt;/p&gt;

&lt;p&gt;Additionally, participants receive an icon next to their name until the start of the next hackathon, helping them gain social proof and recognition within the Autocode community. We display this icon by adding a Discord role to the user upon submission.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now you understand why we built this system, I’ll show you how to add it to your Discord server.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up your submission system
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What you will need
&lt;/h3&gt;

&lt;p&gt;To follow this guide, you’ll need a couple of things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An &lt;a href="https://autocode.com" rel="noopener noreferrer"&gt;Autocode account&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;A &lt;a href="https://tally.so/signup" rel="noopener noreferrer"&gt;Tally account&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;A Discord server that you have admin access to. This is the server that your hackathon will run inside.

&lt;ul&gt;
&lt;li&gt;A channel inside that Discord server for your hackathon. This is where submission notifications will be sent. We recommend making this channel public.&lt;/li&gt;
&lt;li&gt;A role setup on that Discord server which will be automatically awarded to hackathon entrants. The role does not require any specific permissions.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Once you’ve got all of these things, you’re ready to add our hackathon submission system to your Discord server!&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting up your Autocode project
&lt;/h3&gt;

&lt;p&gt;Head over to our &lt;a href="https://autocode.com/jacklynbiggin/templates/hackathon-submissions/" rel="noopener noreferrer"&gt;Hackathon Submission System for Discord template’s page on Autocode&lt;/a&gt; and click the green &lt;strong&gt;Install&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiyqcxtrm40ica6wszucg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiyqcxtrm40ica6wszucg.png" alt="Click the green install button"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When prompted, give your project a name, then click &lt;strong&gt;Next&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4eyt53ugjeklyyle1t3l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4eyt53ugjeklyyle1t3l.png" alt="Set your project's name"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll now need to link your Discord bot account to this template. If you’ve built your own Discord bot before, you can link your existing bot’s account. If not, Autocode will guide you through how to set one up - it only takes a few minutes.&lt;/p&gt;

&lt;p&gt;Click the blue &lt;strong&gt;Link resource&lt;/strong&gt; button and follow the instructions onscreen to create and link a Discord bot account. Once your account is linked, click &lt;strong&gt;Continue&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fij3g7bxu838cd3k0sn7x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fij3g7bxu838cd3k0sn7x.png" alt="Link your Discord bot to Autocode"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll then be prompted for your Discord channel ID, role ID and guild ID. You can obtain these by &lt;a href="https://www.youtube.com/watch?v=FmeQte6S7D8" rel="noopener noreferrer"&gt;enabling Discord developer mode&lt;/a&gt;, right clicking your server’s name (in the top left corner of Discord), a channel (in Discord’s sidebar), or a role (in the Discord server settings panel), and clicking &lt;strong&gt;Copy ID&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can also add a share link. After submitting, participants will be asked if they’d like to share the hackathon on social media. If they choose to, this is the link that will be shared. We recommend linking to a blog post announcing your hackathon, rather than a post inside a Discord server to maximize your number of potential participants.&lt;/p&gt;

&lt;p&gt;Once you’ve set all these values, click &lt;em&gt;Install Now&lt;/em&gt;*. Autocode will then install your project and take you to the Autocode editor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flhn1ey93g9d3n6gjmnhd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flhn1ey93g9d3n6gjmnhd.png" alt="Set your environment variables then click install"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From Autocode’s editor, you can modify all the code that powers this submission system, allowing you to build a truly bespoke experience for your community. However, we’ll focus on using the pre-existing code in this guide&lt;/p&gt;

&lt;p&gt;To send data from Tally to Autocode, we’ll use Tally’s webhooks feature. To get the URL that we’ll send data to, open the &lt;code&gt;functions/addRole.js&lt;/code&gt; file, and copy the URL at the bottom of the editor. Keep it safe - you’ll need it shortly!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jf7bufj8bd45atrc55b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jf7bufj8bd45atrc55b.png" alt="Keep your endpoint URL safe, you'll need it later"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Awesome, your Autocode project is all set up and ready to go! Now let’s set up our submission form on Tally.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting up your Tally form
&lt;/h3&gt;

&lt;p&gt;Head over to our &lt;a href="https://tally.so/templates/autocode-challenge-submission-template/mYj1N3" rel="noopener noreferrer"&gt;Hackathon Submission Template page on Tally&lt;/a&gt; and click the &lt;strong&gt;Use this template&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fru9p4xigw16i02v63fvt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fru9p4xigw16i02v63fvt.png" alt="Use this tally template"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Modify the template to contain your required questions, but make sure you don’t change the first question, otherwise our system won’t work as intended. You can change, add, or delete any other questions.&lt;/p&gt;

&lt;p&gt;Once your form is setup, delete the setup instructions at the top of the page, then click &lt;strong&gt;Publish&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30gpr9ti47m3x92zp5lp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30gpr9ti47m3x92zp5lp.png" alt="Setup your Tally form, then publish it"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Time to link our form to our Autocode project! Open the &lt;strong&gt;Integrations&lt;/strong&gt; on the page that appeared when you published your project, then click the &lt;strong&gt;Connect&lt;/strong&gt; button for the Webhooks integration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F84y5b9kgi0lvka5rs484.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F84y5b9kgi0lvka5rs484.png" alt="Connect a new webhook integration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Page in the endpoint URL you copied earlier, then click &lt;strong&gt;Connect&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzkwtrixw2cqpdlk3h87o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzkwtrixw2cqpdlk3h87o.png" alt="Paste in your addRole endpoint URL, then save"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optional:&lt;/strong&gt; By default, Tally will display a basic “thank you” screen once a user submits their project. If you’d like to use our custom page, open the &lt;strong&gt;Settings&lt;/strong&gt; tab, enable &lt;em&gt;Redirect on completion&lt;/em&gt;, and paste in the URL of the &lt;code&gt;www/thanks.html&lt;/code&gt; file in your Autocode project. Then click &lt;strong&gt;Save changes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fngq2ty8dc2vf6eoayaxk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fngq2ty8dc2vf6eoayaxk.png" alt="Add a custom thanks screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations! Your submission system is set up and ready to go! Now let’s test it out.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing your submission system
&lt;/h3&gt;

&lt;p&gt;Head over to the published version of your Tally form - you can find its URL in the &lt;strong&gt;Share&lt;/strong&gt; tab on Tally. Fill out the form, and submit it. Then, head over to Discord.&lt;/p&gt;

&lt;p&gt;You should see a message thanking you for your submission, and you’ll also have gained a fancy new role saying that you entered this hackathon. If so, your hackathon submission system is working and ready to go!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F80spu72q9w1d0qnaelf3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F80spu72q9w1d0qnaelf3.png" alt="Hopefully you see a thank you message like this"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you’re ready to judge your hackathon, simply export the data in Tally as a Google Sheet (or whatever other format you prefer), and take a look at your projects! Once you’ve judged your projects, announce your winners however you wish. When we declare our winners, we manually award them a custom Discord role to recognise them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently asked questions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Couldn’t anyone technically submit on behalf of anyone else if they knew their Discord ID?

&lt;ul&gt;
&lt;li&gt;Yes. Discord user IDs are public information. However, in our 30,000+ member community, we’ve never had a problem with people doing this, so haven’t added a system to prevent this. It would be fairly trivial to rework the /whatsmyid command to generate a unique key for the user which they’d input into the Tally form, and then validate that key in the &lt;code&gt;functions/addRole.js&lt;/code&gt; file, if this concerns you.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;How customizable is this system?

&lt;ul&gt;
&lt;li&gt;You have full access to all the code that runs this submission system. You can edit everything - the messages shown when someone submits, what the thank you page looks like, and even add entirely new logic to hook into your own community tools! Autocode will also host the code 24/7, so you don’t need to worry about deployments or version control.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Is this the exact same system that Autocode uses to run Community Challenges?

&lt;ul&gt;
&lt;li&gt;It almost is! The core logic in this template is identical to what Autocode uses. The main thing that is removed from this template is our custom metrics and tracking system, but you could integrate your own! &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;I hope that this submission system helps you grow your community, and keep existing members engaged! If you have any questions, feel free to &lt;a href="https://discord.gg/autocode" rel="noopener noreferrer"&gt;ask them in Autocode’s Discord server&lt;/a&gt; where we’ll be happy to help!&lt;/p&gt;

</description>
      <category>hackathon</category>
      <category>discord</category>
      <category>devrel</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
