Inspiration

We follow many digital artists on Twitter, and one problem we often see them encounter is when someone tries to profit off of their work unfairly ⁠— for instance, by putting it on a shirt or turning it into an NFT and then trying to sell it.

An artist can file a DMCA takedown notice to get the stolen content removed, but it can often be unclear what elements are needed in such a notice. For instance, every DMCA notice needs "a statement that the complaining party has a good faith belief that use of the material in the manner complained of is not authorized by the copyright owner, its agent, or the law" (US Copyright Office). Without all the requirement elements, the complaint is not legally effective. It can also be unclear to whom DMCA complaints need to be sent. We wanted to create a bot that could help streamline the process for artists.

What it does

Millie is a Discord bot that can help you file a DMCA takedown notice by generating an email for you with the required legal elements. She can also fill out an online DMCA form for a specific service provider. In addition, most service providers have emails and addresses reserved for DMCA complaints. Millie aggregates that information so you can simply click on the company you're interested in to find the proper channels instead of hunting through a company's copyright policy.

How we built it

We built this bot using discord.py to handle commands and events. We also used discord-components for the interactive elements, including buttons and dropdowns. Finally, we used Splinter, which is based on Selenium, to interact with the browser and fill out forms.

Challenges we ran into

We were familiar with making Discord bots that only had one response to the user's messages per event handler. For Millie, we had to code a multi-step "conversation", where the bot listened for multiple user inputs, stored those inputs in memory, and then included them all in a DMCA email at the end of the sequence. We were also handling different types of user input within the same event handler (for instance, button presses and chat messages). We ran into some issues keeping track of those inputs and making sure that the bot responded to each input at the correct time, but we were able to fix those issues. When using Splinter, we also ran into some problems accessing HTML form elements, which we ultimately managed to resolve.

Accomplishments that we're proud of

We're proud of the fact that we were able to overcome the challenges mentioned above and code a functional bot.

What we learned

We learned a lot ⁠— not only about using the Discord libraries for Python, but also about the laws governing the use of digital content.

What's next for Millie

Right now, Millie fills out forms for the user to copy-paste into their email client and send to a DMCA agent. We would love to streamline this process by creating a functionality that would allow Millie to send those emails automatically.

Built With

  • discord-components
  • discord.py
  • splinter
Share this project:

Updates