DEV Community

discord.py Project 4: ✍🏽Partnership Bot!

terabyte. on May 05, 2021

In this article, we're going to create a Discord bot that can guide users through an automatic partnership process! What's a Discord server par...
Collapse
 
janakxd profile image
Janak

bro confirm reactions are not coming in embed and code also gives error
Error:

confirm = ReactConfirm(message=prompt, bot=bot)
TypeError: __init__() missing 1 required positional argument: 'user'
Enter fullscreen mode Exit fullscreen mode
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: __init__() missing 1 required positional argument: 'user'
Enter fullscreen mode Exit fullscreen mode
Collapse
 
mikeywastaken profile image
terabyte.

Thanks for letting me know! The updated line should be:

confirm = ReactConfirm(user=ctx.member,message=prompt, bot=bot)
Enter fullscreen mode Exit fullscreen mode
Collapse
 
janakxd profile image
Janak

lol bro, still error

confirm = ReactConfirm(user=ctx.member,message=prompt, bot=bot)
AttributeError: 'Context' object has no attribute 'member'
Enter fullscreen mode Exit fullscreen mode
Thread Thread
 
mikeywastaken profile image
terabyte.

Jeez, I did it in a rush. ctx.member should be ctx.author

Thread Thread
 
janakxd profile image
Janak

bro now no errors but when i try to confirm by clicking tick then nothing happens no error, no advertise :(
,btw thanks by reading this artical i learned how to use discord forms thanks a lot

Thread Thread
 
mikeywastaken profile image
terabyte.

Hmm, i'm unsure about what could be happening. Make sure that your channel ID is correct, and could you send your code? (excluding the token of course)

Thread Thread
 
janakxd profile image
Janak • Edited

yes

to send code i removed token and channel ids

from discord.ext import commands
import discord
from discord.ext.forms import Form, ReactConfirm

TOKEN = "token here"
intents = discord.Intents(messages=True, guilds=True)
bot = commands.Bot(command_prefix="!", intents=intents)

@bot.command()
async def partner(ctx):
    form = Form(ctx, "Partnership Request")
    form.add_question(
        "What's the invite link to your server?", # The question which it will ask
        "invitelink", # What the form will call the result of this question
        "invite" # The type the response should be
    )
    form.add_question(
        "What's a description of your server?",
        "description"
    )
    form.add_question(
        "What's your server's advertisement?",
        "advertisement"
    )
    results = await form.start()
    embed = discord.Embed(
        title=f"Partnership Request from {results.invitelink.guild.name}",
        description=f"**Description:** {results.description}",
    )
    embed.set_thumbnail(url=results.invitelink.guild.icon_url)
    embed.set_author(name=ctx.author, icon_url=ctx.author.avatar_url)
    partnershipreq = bot.get_channel("i removed channel id")
    prompt = await partnershipreq.send(embed=embed)

    confirm = ReactConfirm(user=ctx.author,message=prompt, bot=bot)
    accepted = await confirm.start()

    if accepted:
        partners = bot.get_channel("i removed channel id")
        em = discord.Embed(title=results.invitelink.guild.name,description=results.advertisement, color=0x2F3136)
        em.set_author(name=ctx.author, icon_url=ctx.author.avatar_url)
        em.set_thumbnail(url=results.invitelink.guild.icon_url)
        await partners.send(embed=em)


bot.run(TOKEN)
Enter fullscreen mode Exit fullscreen mode
Collapse
 
amank346 profile image
Aman-k346

kages/discord/ext/commands/core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "main.py", line 121, in testform
form = forms.Form(ctx, 'Title')
NameError: name 'forms' is not defined

when i try to import forms it's not working

Collapse
 
janakxd profile image
Janak

first make sure that you have indstalled module or not :

pip install discord-ext-forms
Enter fullscreen mode Exit fullscreen mode

and if you already have installed then import module like this :

from discord.ext.forms import Form, ReactConfirm
Enter fullscreen mode Exit fullscreen mode
Collapse
 
ffbboy30 profile image
ffbboy30

Hi,
Nice article , Do you have a tips to create a client capable of receiving messages from a channel whose identifier I know?

Collapse
 
mikeywastaken profile image
terabyte.

Well, you could check if the channel's ID matches the ID that you have:

# on_message
if message.channel.id == your_id:
    # NOW i want to run the rest of the code, inside of this if statement.
Enter fullscreen mode Exit fullscreen mode
Collapse
 
ffbboy30 profile image
ffbboy30

Thanks My problem is the channel connexion , I'm not the channel admin I just want to read message Like in my application.
Is it possible to register with mail and password like in the app ?

Thread Thread
 
mikeywastaken profile image
terabyte.

Not without using selfbots, which is highly against ToS and will get you banned from Discord. You should just get permission from a channel admin with a link that only has the send/read messages permission, so that it cannot abuse anything.

Collapse
 
edwardd profile image
edward

it says:
Traceback (most recent call last):
File "main.py", line 3, in
from discord.ext.forms import Form, ReactConfirm
ModuleNotFoundError: No module named 'discord.ext.forms

Collapse
 
mikeywastaken profile image
terabyte.

Sorry for the late reply, did you pip install discord.ext.forms? Do you have multiple Python installations?

Collapse
 
charanleo25 profile image
Charanleo25

It was Amazing, could you make all this code available together rather code snippets.

Collapse
 
mikeywastaken profile image
terabyte. • Edited

If I understand what you're requesting, I have included the code together at the bottom of the article.

Collapse
 
charanleo25 profile image
Charanleo25

nope, all those parts of codes like invite, welcome.