Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import discord
- from discord.ext import commands
- from test.test_nntplib import bypass_context
- from discord.ext.commands.core import command
- from discord import ChannelType
- import json
- import datetime
- import os.path
- DEBUG = False
- TOKEN = 'NDY1NjE0MTc2NzI3OTkwMjc0.DiQEmg.t-_CuKCS9-blBeBu_NsaluHz-Fo'
- PARTNER_CHANNEL_ID = '466029217969209346'
- COLOUR = 0x4286f4
- partners = {}
- questions = ['Please provide an invite link to your server.', 'Why do you want to partner?', 'How can we benefit from partnering with you?']
- bot = commands.Bot(command_prefix = '-')
- if not os.path.isfile('partners-data.json'):
- with open('partners-data.json', 'w+') as fp:
- json.dump({}, fp)
- with open('partners-data.json', 'r') as fp:
- partners = json.load(fp)
- async def send_embed(destination, embed, content = None, member = None):
- if member is None:
- embed.set_footer(text = bot.user.name, icon_url = bot.user.avatar_url)
- else:
- embed.set_footer(text = str(member), icon_url = member.avatar_url)
- embed.colour = COLOUR
- embed.timestamp = datetime.datetime.now()
- return await bot.send_message(destination, embed = embed, content = content)
- @bot.event
- async def on_ready():
- await bot.change_presence(game = discord.Game(name = '{}partner | Made by Dori_mon#0001'.format(bot.command_prefix)))
- if DEBUG : print (discord.__version__)
- print('Bot is ready.')
- @bot.event
- async def on_reaction_add(reaction, user):
- if DEBUG : print('reaction')
- if user.bot:
- return
- message = reaction.message
- if message.channel.type != ChannelType.private:
- return
- if reaction.emoji == '✅':
- if DEBUG : print('emoji equals')
- if partners[user.id]['stage'] == message.id:
- if DEBUG : print('status equals')
- desc = ''
- for x in range(0, len(partners[user.id]['answers'])):
- question = list(partners[user.id]['answers'].keys())[x]
- answer = partners[user.id]['answers'][question]
- desc += '\n\n{}. {}'.format(x+1, question)
- desc += '\n**Your answer:** {}'.format(answer)
- await send_embed(bot.get_channel(PARTNER_CHANNEL_ID), content = 'New form submitted by {}.'.format(user.mention), member = user, embed = discord.Embed(title = 'Partnership', description = desc))
- await send_embed(user, member = user, embed = discord.Embed(title = 'Success!', description = 'Successfully submitted the form!'))
- @bot.event
- async def on_message(message):
- if message.channel.type == ChannelType.private:
- member = message.author
- content = message.content
- if content.lower() == 'cancel':
- if DEBUG : print('Cancelled')
- partners.pop(member.id, None)
- with open('partners-data.json', 'w+') as fp:
- json.dump(partners, fp)
- await send_embed(message.channel, embed = discord.Embed(title = 'Success!', description = 'Successfully cancelled! If you\'d like to submit another form do `{}partner` again.'.format(bot.command_prefix)))
- return
- if member.id in partners:
- if DEBUG : print('member in partners')
- if partners[member.id]['stage'] in questions:
- if DEBUG : print('stage {}'.format(partners[member.id]['stage']))
- partners[member.id]['answers'][partners[member.id]['stage']] = content
- with open('partners-data.json', 'w+') as fp:
- json.dump(partners, fp)
- if len(partners[member.id]['answers']) < len(questions):
- partners[member.id]['stage'] = questions[len(partners[member.id]['answers'])]
- with open('partners-data.json', 'w+') as fp:
- json.dump(partners, fp)
- await send_embed(member, embed = discord.Embed(title = 'Partnership', description = partners[member.id]['stage']))
- else:
- desc = ''
- for x in range(0, len(partners[member.id]['answers'])):
- question = list(partners[member.id]['answers'].keys())[x]
- answer = partners[member.id]['answers'][question]
- desc += '\n\n{}. {}'.format(x+1, question)
- desc += '\n**Your answer:** {}'.format(answer)
- msg = await send_embed(member, member = member, content = 'We are done with the questions!\nTo submit the form please react with ✅ to this message.\nNOTE: Running the {}partner command again will override your current form!'.format(bot.command_prefix), embed = discord.Embed(title = 'Partnership', description = desc))
- partners[member.id]['status'] = 'waiting_for_reaction'
- partners[member.id]['stage'] = msg.id
- with open('partners-data.json', 'w+') as fp:
- json.dump(partners, fp)
- await bot.add_reaction(msg, '✅')
- await bot.process_commands(message)
- @bot.command(pass_context=True)
- async def partner(ctx, member: discord.Member = None):
- if member is None:
- member = ctx.message.author
- partners[member.id] = {}
- partners[member.id]['answers'] = {}
- partners[member.id]['stage'] = questions[0]
- with open('partners-data.json', 'w+') as fp:
- json.dump(partners, fp)
- if ctx.message.channel.type != ChannelType.private:
- await send_embed(ctx.message.channel, embed = discord.Embed(title = 'Success!', description = 'Please check your DMs.'))
- await send_embed(member, embed = discord.Embed(title = 'Partnership', description = partners[member.id]['stage']))
- bot.run(TOKEN)
Add Comment
Please, Sign In to add comment