2024-08-10 17:30:06 +00:00
import nextcord
from nextcord . ext import commands , application_checks
from nextcord import TextInputStyle
import random
import aiosqlite as sqlite3
import aiohttp
from urllib . parse import urlparse
import os
2024-08-10 18:12:04 +00:00
class GameView ( nextcord . ui . View ) :
def __init__ ( self ) :
super ( ) . __init__ ( timeout = None )
@nextcord.ui.button (
label = " Next Turn " , style = nextcord . ButtonStyle . green , custom_id = " gameutils:nextturn "
)
async def approve ( self , button : nextcord . ui . Button , interaction : nextcord . Interaction ) :
2024-08-10 19:51:09 +00:00
if application_checks . check ( application_checks . has_permissions ( manage_roles = True ) ) :
2024-08-10 19:52:40 +00:00
await interaction . response . send_message ( f " You don ' t have permission! { application_checks . check ( application_checks . has_permissions ( manage_roles = True ) ) } " , ephemeral = True )
2024-08-10 18:41:44 +00:00
ogmsg = interaction . message . content . split ( " \n " )
2024-08-10 18:12:04 +00:00
ogmsg . pop ( 0 )
message = " It has been decreed.. \n "
found = False
2024-08-10 19:48:39 +00:00
turnover = False
2024-08-10 19:02:33 +00:00
for i in range ( len ( ogmsg ) ) :
if ogmsg [ i ] . startswith ( " ~ " ) :
2024-08-10 19:31:52 +00:00
message = f " { message } { ogmsg [ i ] } \n "
2024-08-10 18:12:04 +00:00
continue
if not found :
2024-08-10 19:02:33 +00:00
newmsg = " ~~ " + ogmsg [ i ] + " ~~ "
message = message + newmsg + " \n "
2024-08-10 19:37:41 +00:00
found = True
try :
turnping = ogmsg [ i + 1 ] . split ( " < " ) [ 1 ] . split ( " > " ) [ 0 ]
except IndexError :
message = message + " The turn is over "
turnover = True
2024-08-10 18:12:04 +00:00
continue
else :
2024-08-10 19:02:33 +00:00
message = message + ogmsg [ i ] + " \n "
2024-08-10 18:14:21 +00:00
print ( interaction . user . guild_permissions )
2024-08-10 18:56:01 +00:00
await interaction . response . edit_message ( content = message )
2024-08-10 19:37:41 +00:00
if turnover :
await interaction . followup . send ( f " The turn has concluded " )
else :
await interaction . followup . send ( f " < { turnping } > it is now your turn! " )
2024-08-10 18:12:04 +00:00
return
2024-08-10 17:30:06 +00:00
class gameutils ( commands . Cog ) :
def __init__ ( self , bot : commands . Bot ) :
self . bot = bot
2024-08-10 19:20:40 +00:00
@commands.Cog.listener ( ' on_ready ' )
async def gameready ( self ) :
self . bot . add_view ( GameView ( ) )
2024-08-10 17:30:06 +00:00
@nextcord.slash_command (
name = " turngen " ,
description = " Roll the next turn for a certian role " ,
guild_ids = [ 699285282276507708 ] ,
)
@nextcord.ext.application_checks.has_permissions ( manage_roles = True )
async def turngen ( self , interaction : nextcord . Interaction , role : nextcord . Role ) :
message = " It has been decreed.. \n "
users = role . members
random . shuffle ( users )
2024-08-10 17:34:27 +00:00
for i in range ( len ( users ) ) :
2024-08-10 18:43:57 +00:00
message = message + f " { str ( i + 1 ) } \ . <@ { users [ i ] . id } > \n "
2024-08-10 18:56:01 +00:00
await interaction . response . send_message ( message , view = GameView ( ) , allowed_mentions = nextcord . AllowedMentions . none ( ) )
2024-08-10 18:24:48 +00:00
await interaction . followup . send ( f " <@ { users [ 0 ] . id } > it is now your turn! " )
2024-08-10 17:30:06 +00:00
def setup ( bot : commands . Bot ) :
bot . add_cog ( gameutils ( bot ) )