2020-04-08 15:27:05 +00:00
import discord
from discord . ext import commands
from discord . ext . commands import Cog
2023-03-09 22:01:10 +00:00
from robocop_ng . helpers . checks import check_if_staff
2020-04-08 15:27:05 +00:00
class RyujinxVerification ( Cog ) :
def __init__ ( self , bot ) :
self . bot = bot
# Export reset channel functions
self . bot . do_reset = self . do_reset
self . bot . do_resetalgo = self . do_resetalgo
@Cog.listener ( )
async def on_member_join ( self , member ) :
await self . bot . wait_until_ready ( )
2023-04-05 10:10:18 +00:00
if member . guild . id not in self . bot . config . guild_whitelist :
2020-04-08 15:27:05 +00:00
return
2023-04-05 10:10:18 +00:00
join_channel = self . bot . get_channel ( self . bot . config . welcome_channel )
2020-04-08 15:27:05 +00:00
if join_channel is not None :
2022-01-10 08:42:53 +00:00
await join_channel . send (
2022-11-10 14:09:57 +00:00
" Hello {0.mention} ! Welcome to Ryujinx! Please read the <#411271165429022730>, and then type the verifying command here to gain access to the rest of the channels. \n \n If you need help with basic common questions, visit the <#585288848704143371> channel after joining. \n \n If you need help with Animal Crossing visit the <#692104087889641472> channel for common issues and solutions. If you need help that is not Animal Crossing related, please visit the <#410208610455519243> channel after verifying. " . format (
member
)
)
2020-04-08 15:27:05 +00:00
async def process_message ( self , message ) :
""" Process the verification process """
2023-04-05 10:10:18 +00:00
if message . channel . id == self . bot . config . welcome_channel :
2020-04-08 15:27:05 +00:00
# Assign common stuff into variables to make stuff less of a mess
mcl = message . content . lower ( )
# Get the role we will give in case of success
2023-04-05 10:10:18 +00:00
success_role = message . guild . get_role ( self . bot . config . participant_role )
2020-04-08 15:27:05 +00:00
2023-04-05 10:10:18 +00:00
if self . bot . config . verification_string == mcl :
2020-04-08 15:27:05 +00:00
await message . author . add_roles ( success_role )
await message . delete ( )
@Cog.listener ( )
async def on_message ( self , message ) :
if message . author . bot :
return
try :
await self . process_message ( message )
except discord . errors . Forbidden :
chan = self . bot . get_channel ( message . channel )
await chan . send ( " 💢 I don ' t have permission to do this. " )
@Cog.listener ( )
async def on_message_edit ( self , before , after ) :
if after . author . bot :
return
try :
await self . process_message ( after )
except discord . errors . Forbidden :
chan = self . bot . get_channel ( after . channel )
await chan . send ( " 💢 I don ' t have permission to do this. " )
@Cog.listener ( )
async def on_member_join ( self , member ) :
await self . bot . wait_until_ready ( )
2023-04-05 10:10:18 +00:00
if member . guild . id not in self . bot . config . guild_whitelist :
2020-04-08 15:27:05 +00:00
return
2023-04-05 10:10:18 +00:00
join_channel = self . bot . get_channel ( self . bot . config . welcome_channel )
2020-04-08 15:27:05 +00:00
if join_channel is not None :
2023-04-05 10:10:18 +00:00
await join_channel . send ( self . bot . config . join_message . format ( member ) )
2020-04-08 15:27:05 +00:00
@commands.check ( check_if_staff )
@commands.command ( )
async def reset ( self , ctx , limit : int = 100 , force : bool = False ) :
""" Wipes messages and pastes the welcome message again. Staff only. """
2023-04-05 10:10:18 +00:00
if ctx . message . channel . id != self . bot . config . welcome_channel and not force :
2022-11-10 14:09:57 +00:00
await ctx . send (
f " This command is limited to "
2023-04-05 10:10:18 +00:00
f " <# { self . bot . config . welcome_channel } >, unless forced. "
2022-11-10 14:09:57 +00:00
)
2020-04-08 15:27:05 +00:00
return
await self . do_reset ( ctx . channel , ctx . author . mention , limit )
async def do_reset ( self , channel , author , limit : int = 100 ) :
await channel . purge ( limit = limit )
async def do_resetalgo ( self , channel , author , limit : int = 100 ) :
# We only auto clear the channel daily
await self . do_reset ( channel , author )
2022-01-10 08:42:53 +00:00
async def setup ( bot ) :
await bot . add_cog ( RyujinxVerification ( bot ) )