RFC #2: Pairbot

Hello everyone!

So this is just an RFC about a discord bot that I’ve hacked together and wanted to find out what other people make of this and if this is something that people will use?

Just a heads up, English isn’t my first language so there will be mistakes, my apologies.

What are we doing?

We are gonna build a discord pairing bot.

Why are we doing it?

The idea behind the bot is to help people collaborate, learn and in the end make new friends. Especially now in the beginning where everything feels chaotic and you don’t know where to begin. The idea is that you can use the bot to see what other people are busy building and if they are available you can join and help build something awesome together.

This is also hopefully something we can add to other guilds. For example, the writing guild where people can write together.

How are we doing it?

So I’ve pretty much hacked a minimum viable product together by looking at what the discord resource bot team did, to create their bot. However, there is still a lot of work to be done.

Just to name a few things, this includes

  • Improving the code quality (it’s horrible at the moment).
  • Adding new features
  • Making the bot available to other guilds
  • Documentation
  • Refactoring

Tech Stack:

  • TypeScript
  • Discord.js
  • Supabase (PostgreSQL)

Available Commands

/add

The basic idea is that you will need to add yourself to the pairing database before you can do anything. All of these fields are required. I pretty much took the same fields from the pair hub excel spreadsheet.

/edit

With this command, it is possible to edit your profile. You just need to select the options you want and enter in their new value.

/available

So to prevent 24/7 invitations especially when you are busy. You are able to set yourself as available with an optional field. This goal optional field is used to tell other people, about what you want to work on or are currently busy working on at the moment. If you don’t set yourself available people won’t be able to invite you.

/developers

So this command is pretty straightforward. You get two subcommands where the first one lists all developers in the paring database and the second one only those who are available to pair. The bot will then reply with an ASCI table (see below). This is definitely not the optimal way to list developers.



/view

After seeing the list of developers that are available to pair you can view their profiles by using the /view command. The bot will then reply with the following message:

You then have the option to invite that person to pair up with. The bot will then send a direct message with your profile to that person. This person can then decide whether they would like to accept or just ignore it.

If they however do decide to accept. The bot will create a thread and invite both of you to that thread to start collaborating. The bot will also set both of your availability to false, to prevent other people from inviting you.

/invite

This command will just send an invite without viewing that person’s profile. However, the person you invite will still get to view your profile and decide whether they want to pair up or not.

/unavailable

Just a command to make yourself unavailable so that people can’t send you invites.

/remove

This will completely remove you from the pairing database.

11 Likes

This looks great!
I would like to pair up with you and contribute/review some code.

4 Likes

Looking forward to seeing how this turns out. Good luck!

I’d also suggest bringing this up in the dev guild townhall that we are planning - whenever that happens.

5 Likes

Looks great, this makes it very easy for people to collaborate!
What do you think of an app built on top of the same supabase db so that devs can perform the same actions outside of discord? On my own experience, it’s a bit caotic to keep track of things in discord :sweat_smile:

I’m actually building an app similiar to this as I explore new tech. The app would let devs register their skills and availability and another dev would be able to search for a skillset they need collaboration/mentoring on.

Let me know what your thoughts are on this, seems to me this could go hand in hand :smiley:

3 Likes

This is very cool. It’s thematically different enough from Devie that we can create a new codebase. Will also make it easier for folks outside of DDAO to fork and run it for their own communities.

I highly support this! We can authenticate with Discord so users can find folks in their communities and schedule sessions outside Discord. Authentication via wallets could also be a thing. Connect wallet → select token → find community members looking to pair. Let’s start by fleshing out the bot and then creating the web app.

2 Likes

You can take a look at what I already got https://dev-dao-skills.vercel.app/
I went with connecting to your wallet, getting your first DEVS token id and you’ll be able to add your skillset for other devs to look at.
Ideas I got moving forward are skill searching, dev profiles (username, avatar, discord, twitter, …), pairing, availability toggle, among some other stuff :slight_smile:
I’ve been mostly using this to explore Chakra and Supabase on my own, but maybe I should move the repo to the DAO github and let others collaborate :sweat_smile:

1 Like

Yeah sounds awesome, I am using supabase at the moment also. But would love to talk about this on Discord when you have time! MartinB#3285.

2 Likes

Thanks for taking the time to put this together! I was very impressed with how much you had already built when you gave me a tour the other day, so this was a natural fit for an RFC!

1 Like

Sounds like a great idea to me! The beginnings of our own platform as a DAO.

1 Like

Hey Martin, thanks for putting together this RFC, and I think it’s a great idea.

I would suggest adding a feature for expected time commitments for different projects around D_D. It can be expressed as # hours per week.

It can be quite daunting jumping into a project where the other developers may expect/want more of a time commitment on building something up, and someone may want a light involvement.
Having such a feature will help folks filter to find the right project. In addition, a project could also have a mix of highly involved and less involved developers.

I’m part of a Data Science community where we build a lot of open-source projects; usually, we divide up folks who are interested in building as “core contributor” (10+ hours a week) and “spectator” (2-5 hours a week).

5 Likes

Yea this sounds awesome will definitely add this. Thanks for the suggestion!

1 Like

I read something about open source projects mentioning that the two types of contributors were mainly core contributors that would put in consistent work over the long term and one-offs that would contribute something once to be never seen again. Thoughts on having something for them too?

~accidentally deleted the response, but here it is.


I think it depends on the project.

Certain projects and tasks may require some familiarity with the domain and the problem being solved. The cost of getting up to speed is high, and the project may want to have dedicated contributors.

Some projects may have one-off tasks that a contributor can contribute just once. It does require a task scope that is clearly defined.

It is best to leave that choice to the project’s current contributors / champions and how they want to organize it.