Discord.py bot: how would I make my discord bot send me responses to a command that users use in DMs e.g. for a survey?

前端 未结 2 734
旧巷少年郎
旧巷少年郎 2020-12-12 03:44

So, I want to make my discord bot have a command for a survey where if the user says something like \"#survey\" then the bot will DM them with the question. Then I want to m

相关标签:
2条回答
  • 2020-12-12 04:11
    @client.event
    async def on_message(message):
        if message.channel.is_private: 
             #If any of the users DM the bot, the bot will send you the message in your DMS
             owner = client.get_member("id_to_send")
             await client.send_message(owner,f"{message.author}": {message.content})
        await client.process_commands(message)
    @client.command(pass_context=True)
    async def survey(ctx):
        await client.send_message(ctx.message.author,"The question you want to ask.")
    

    This could work fine :-)

    0 讨论(0)
  • 2020-12-12 04:15

    I assume the part you're having trouble with is capturing the response. discord.py overloads the function(args, *, kwargs) syntax for commands, so that a single argument after the * is the text of the rest of the message.

    from discord.ext.commands import Bot
    
    bot = Bot('#')
    
    my_user_id = "<Your ID>"  
    # You can get your id through the discord client, after activating developer mode.
    
    @bot.command(pass_context=True)
    async def survey(ctx):
        await bot.send_message(ctx.message.author, "What's your name?")
    
    @bot.command(pass_context=True)
    async def respond(ctx, *, response):
        owner = await bot.get_user_info(my_user_id)
        await bot.send_message(owner, "{} responded: {}".format(ctx.message.author.name, response))
    
    bot.run("token")
    
    0 讨论(0)
提交回复
热议问题