ryuko-ng/robocop_ng/cogs/invites.py

51 lines
1.4 KiB
Python
Raw Normal View History

import json
import discord
2019-03-02 23:40:43 +00:00
from discord.ext import commands
from discord.ext.commands import Cog
from robocop_ng import config
from robocop_ng.helpers.checks import check_if_collaborator
2019-03-02 23:40:43 +00:00
2019-03-02 23:40:43 +00:00
class Invites(Cog):
def __init__(self, bot):
self.bot = bot
@commands.command()
@commands.guild_only()
@commands.check(check_if_collaborator)
async def invite(self, ctx):
welcome_channel = self.bot.get_channel(config.welcome_channel)
author = ctx.message.author
2019-03-03 14:12:30 +00:00
reason = f"Created by {str(author)} ({author.id})"
invite = await welcome_channel.create_invite(
max_age=0, max_uses=1, temporary=True, unique=True, reason=reason
)
2019-03-03 14:12:30 +00:00
2019-03-02 23:40:43 +00:00
with open("data/invites.json", "r") as f:
invites = json.load(f)
2019-03-03 14:12:30 +00:00
invites[invite.id] = {
"uses": 0,
"url": invite.url,
"max_uses": 1,
"code": invite.code,
2019-03-03 14:12:30 +00:00
}
2019-03-02 23:40:43 +00:00
with open("data/invites.json", "w") as f:
f.write(json.dumps(invites))
await ctx.message.add_reaction("🆗")
try:
await ctx.author.send(f"Created single-use invite {invite.url}")
except discord.errors.Forbidden:
await ctx.send(
f"{ctx.author.mention} I could not send you the \
invite. Send me a DM so I can reply to you."
)
2019-03-02 23:40:43 +00:00
async def setup(bot):
await bot.add_cog(Invites(bot))