async def select_guild(bot, message, msg): guilds = {} user_guilds = await get_user_guilds(bot, message.author) if user_guilds is None: embed = Embed( f"Please [click here]({bot.config.BASE_URI}/login?redirect=/authorized) to verify. " "This will allow the bot to see your servers and is required for the bot to function. " "Then, close the page and return back here." ) await msg.edit(embed) await bot.state.set( f"user_select:{message.author.id}", { "message": message._data, "msg": msg._data, }, ) return for guild in user_guilds: guild = await bot.get_guild(guild) if guild is None: continue channel = None for text_channel in await guild.text_channels(): if is_modmail_channel(text_channel, message.author.id): channel = text_channel if not channel: guilds[str(guild.id)] = (guild.name, False) else: guilds[str(guild.id)] = (guild.name, True) if len(guilds) == 0: await message.channel.send(ErrorEmbed("Oops, something strange happened. No server found.")) return embeds = [] for chunk in [list(guilds.items())[i : i + 10] for i in range(0, len(guilds), 10)]: embed = Embed( "Select Server", "Please select the server you want to send this message to. You can do so by reacting " "with the corresponding emote.", ) embed.set_footer("Use the reactions to flip pages.") for guild, value in chunk: embed.add_field( f"{len(embed.fields) + 1}: {value[0]}", f"{'Create a new ticket.' if value[1] is False else 'Existing ticket.'}\n" f"Server ID: {guild}", ) embeds.append(embed) await msg.edit(embeds[0]) await msg.add_reaction("◀️") await msg.add_reaction("▶️") for reaction in ["1⃣", "2⃣", "3⃣", "4⃣", "5⃣", "6⃣", "7⃣", "8⃣", "9⃣", "🔟"][ : len(embeds[0].fields) ]: await msg.add_reaction(reaction) await bot.state.set( f"reaction_menu:{msg.channel.id}:{msg.id}", { "kind": "selection", "end": int(time.time()) + 180, "data": { "msg": message._data, "page": 0, "all_pages": [embed.to_dict() for embed in embeds], }, }, ) await bot.state.sadd("reaction_menu_keys", f"reaction_menu:{msg.channel.id}:{msg.id}")
async def select_guild(self, message, msg=None): guilds = {} for guild in await self.bot.state.smembers(f"user:{message.author.id}" ): guild = await self.bot.get_guild(int(guild)) channel = None for text_channel in await guild.text_channels(): if tools.is_modmail_channel(text_channel, message.author.id): channel = text_channel if not channel: guilds[str(guild.id)] = (guild.name, False) else: guilds[str(guild.id)] = (guild.name, True) if len(guilds) == 0: await message.channel.send(embed=ErrorEmbed( description= "Oops, no server found. Please change your Discord status to online and try again." )) return embeds = [] for chunk in [ list(guilds.items())[i:i + 10] for i in range(0, len(guilds), 10) ]: embed = Embed( title="Select Server", description= "Please select the server you want to send this message to. You can do so by reacting " "with the corresponding emote.", ) embed.set_footer(text="Use the reactions to flip pages.") for guild, value in chunk: embed.add_field( name=f"{len(embed.fields) + 1}: {value[0]}", value= f"{'Create a new ticket.' if value[1] is False else 'Existing ticket.'}\nServer ID: {guild}", ) embeds.append(embed) if msg: msg = await msg.edit(embed=embeds[0]) else: msg = await message.channel.send(embed=embeds[0]) await msg.add_reaction("◀") await msg.add_reaction("▶") for reaction in [ "1⃣", "2⃣", "3⃣", "4⃣", "5⃣", "6⃣", "7⃣", "8⃣", "9⃣", "🔟" ][:len(embeds[0].fields)]: await msg.add_reaction(reaction) await self.bot.state.sadd( "reaction_menus", { "kind": "selection", "channel": msg.channel.id, "message": msg.id, "end": int(time.time()) + 180, "data": { "msg": message._data, "page": 0, "all_pages": [embed.to_dict() for embed in embeds], }, }, )