Diff
checker
Text
Text
Bilder
Dokumente
Excel
Ordner
Legal
Enterprise
Desktop-App
Preise
Einloggen
Diffchecker Desktop herunterladen
Texte vergleichen
Finde den Unterschied zwischen zwei Textdateien
Werkzeuge
Verlauf
Live-Editor
Gleiches ausblenden
Zeilenumbruch aus
Ansicht
Zweispaltig
Einspaltig
Vergleichsgenauigkeit
Intelligent
Wort
Zeichen
Syntaxhervorhebung
Syntax auswählen
Ignorieren
Text umwandeln
Zur ersten Änderung
Eingabe bearbeiten
Diffchecker Desktop
Der sicherste Weg, Diffchecker zu nutzen. Hol dir die Desktop-App: Deine Diffs verlassen nie deinen Computer!
Desktop holen
Cog diff
Erstellt
letztes Jahr
Diff läuft nie ab
Löschen
Exportieren
Teilen
Erklären
1 Entfernung
Zeilen
Gesamt
Entfernt
Zeichen
Gesamt
Entfernt
Um diese Funktion weiterhin zu nutzen, aktualisiere auf
Diff
checker
Pro
Preise anzeigen
159 Zeilen
Kopieren
7 Hinzufügungen
Zeilen
Gesamt
Hinzugefügt
Zeichen
Gesamt
Hinzugefügt
Um diese Funktion weiterhin zu nutzen, aktualisiere auf
Diff
checker
Pro
Preise anzeigen
159 Zeilen
Kopieren
import discord
import discord
import numpy as np
import numpy as np
from discord.ext import commands, pages
from discord.ext import commands, pages
import os
import os
from discord_bot.utils.cr_functions import combine_cards, get_deck_strings, build_paginator_embeds
from discord_bot.utils.cr_functions import combine_cards, get_deck_strings, build_paginator_embeds
from discord_bot.utils import emoji_cache
from discord_bot.utils import emoji_cache
Kopieren
Kopiert
Kopieren
Kopiert
from discord_bot.utils.embeds import not_in_database
, database_error, error_embed
from discord_bot.utils.embeds import not_in_database
from discord_bot.utils.emoji_cache import MISC_EMOJIS
from discord_bot.utils.emoji_cache import MISC_EMOJIS
# https://guide.pycord.dev/popular-topics/cogs
# https://guide.pycord.dev/popular-topics/cogs
Kopieren
Kopiert
Kopieren
Kopiert
class Player
(commands.Cog):
class Player
Test
(commands.Cog):
def __init__(self, bot):
def __init__(self, bot):
self.bot = bot
self.bot = bot
async def check_valid_playertag(self, playertag):
async def check_valid_playertag(self, playertag):
print(playertag, '#' + playertag.replace('#', '').strip().upper().replace('O', '0'))
print(playertag, '#' + playertag.replace('#', '').strip().upper().replace('O', '0'))
playertag = '#' + playertag.replace('#', '').strip().upper().replace('O', '0')
playertag = '#' + playertag.replace('#', '').strip().upper().replace('O', '0')
playertag_exists = await self.bot.pool.fetchval(f"SELECT EXISTS "
playertag_exists = await self.bot.pool.fetchval(f"SELECT EXISTS "
f"(SELECT 1 FROM players WHERE playertag = $1)", playertag)
f"(SELECT 1 FROM players WHERE playertag = $1)", playertag)
if not playertag_exists:
if not playertag_exists:
return False, not_in_database('playertag', playertag)
return False, not_in_database('playertag', playertag)
return True, playertag
return True, playertag
Kopieren
Kopiert
Kopieren
Kopiert
player
= discord.SlashCommandGroup('player
', 'Player related commands.')
player
2
= discord.SlashCommandGroup('player
2
', 'Player related commands.')
@discord.option('playertag', type=str)
@discord.option('playertag', type=str)
Kopieren
Kopiert
Kopieren
Kopiert
@player
.command(description='Show a basic overview for this playertag.')
@player
2
.command(description='Show a basic overview for this playertag.')
async def basic_info(self, ctx, playertag):
async def basic_info(self, ctx, playertag):
await ctx.defer()
await ctx.defer()
is_valid, result = await self.check_valid_playertag(playertag) # Check if exists in db, else return non-existent
is_valid, result = await self.check_valid_playertag(playertag) # Check if exists in db, else return non-existent
if not is_valid:
if not is_valid:
return await ctx.respond(embed=result)
return await ctx.respond(embed=result)
playertag = result
playertag = result
query = """
query = """
SELECT
SELECT
p.player_name,
p.player_name,
COUNT(*) FILTER (WHERE TRUE) AS total,
COUNT(*) FILTER (WHERE TRUE) AS total,
COUNT(*) FILTER (WHERE match_result = 'win') AS wins,
COUNT(*) FILTER (WHERE match_result = 'win') AS wins,
COUNT(*) FILTER (WHERE match_result = 'loss') AS losses,
COUNT(*) FILTER (WHERE match_result = 'loss') AS losses,
COUNT(*) FILTER (WHERE match_result = 'throw') AS throws,
COUNT(*) FILTER (WHERE match_result = 'throw') AS throws,
COUNT(*) FILTER (WHERE match_result = 'tie') AS ties
COUNT(*) FILTER (WHERE match_result = 'tie') AS ties
FROM matches m
FROM matches m
JOIN players p on m.playertag = p.playertag
JOIN players p on m.playertag = p.playertag
WHERE m.playertag = $1
WHERE m.playertag = $1
GROUP BY p.player_name
GROUP BY p.player_name
"""
"""
row = await self.bot.pool.fetchrow(query, playertag)
row = await self.bot.pool.fetchrow(query, playertag)
total_matches = row["total"]
total_matches = row["total"]
wins = row["wins"]
wins = row["wins"]
losses = row["losses"]
losses = row["losses"]
throws = row["throws"]
throws = row["throws"]
ties = row["ties"]
ties = row["ties"]
name = row["player_name"]
name = row["player_name"]
if wins + losses == 0:
if wins + losses == 0:
win_rate = 0
win_rate = 0
else:
else:
win_rate = (wins / (wins + losses)) * 100
win_rate = (wins / (wins + losses)) * 100
embed = discord.Embed(
embed = discord.Embed(
title=f'{name} ({playertag})',
title=f'{name} ({playertag})',
color=discord.Color.dark_blue(),
color=discord.Color.dark_blue(),
)
)
embed.set_footer(text='Basic Overview')
embed.set_footer(text='Basic Overview')
embed.set_thumbnail(url=os.getenv('BOT_IMAGE'))
embed.set_thumbnail(url=os.getenv('BOT_IMAGE'))
embed.add_field(name=f'__Matches__ {MISC_EMOJIS.get('clan_war_wins')}', value=f'{total_matches}')
embed.add_field(name=f'__Matches__ {MISC_EMOJIS.get('clan_war_wins')}', value=f'{total_matches}')
embed.add_field(name=f'__Win Rate__ 📈', value=f'{win_rate:.2f}%', inline=True)
embed.add_field(name=f'__Win Rate__ 📈', value=f'{win_rate:.2f}%', inline=True)
embed.add_field(name=f'__Wins__ {MISC_EMOJIS.get('win3crowns')}', value=wins, inline=True)
embed.add_field(name=f'__Wins__ {MISC_EMOJIS.get('win3crowns')}', value=wins, inline=True)
embed.add_field(name=f'__Losses__ {MISC_EMOJIS.get('lose3crowns')}', value=losses, inline=True)
embed.add_field(name=f'__Losses__ {MISC_EMOJIS.get('lose3crowns')}', value=losses, inline=True)
embed.add_field(name=f'__Throws__', value=throws)
embed.add_field(name=f'__Throws__', value=throws)
embed.add_field(name=f'__Ties__ {MISC_EMOJIS.get('blue_crown')}{MISC_EMOJIS.get('red_crown')}', value=ties)
embed.add_field(name=f'__Ties__ {MISC_EMOJIS.get('blue_crown')}{MISC_EMOJIS.get('red_crown')}', value=ties)
await ctx.respond(embed=embed)
await ctx.respond(embed=embed)
Kopieren
Kopiert
Kopieren
Kopiert
@player
.command(description='Show the war decks for this playertag.')
@player
2
.command(description='Show the war decks for this playertag.')
@discord.option('playertag', type=str)
@discord.option('playertag', type=str)
Kopieren
Kopiert
Kopieren
Kopiert
async def decks
(self, ctx, playertag):
async def decks
_fail
(self, ctx, playertag):
await ctx.defer()
await ctx.defer()
is_valid, result = await self.check_valid_playertag(playertag) # Check if exists in db, else return it didnt exist
is_valid, result = await self.check_valid_playertag(playertag) # Check if exists in db, else return it didnt exist
if not is_valid:
if not is_valid:
return await ctx.respond(embed=result)
return await ctx.respond(embed=result)
playertag = result
playertag = result
query = """
query = """
SELECT
SELECT
m.playertag,
m.playertag,
m.player_deck_id,
m.player_deck_id,
m.clan_league,
m.clan_league,
ds.cards,
ds.cards,
ds.evolutions,
ds.evolutions,
MAX(m.player_name) AS player_name, -- optional, latest name
MAX(m.player_name) AS player_name, -- optional, latest name
COUNT(*) FILTER (WHERE m.match_result = 'win') AS wins,
COUNT(*) FILTER (WHERE m.match_result = 'win') AS wins,
COUNT(*) FILTER (WHERE m.match_result = 'loss') AS losses
COUNT(*) FILTER (WHERE m.match_result = 'loss') AS losses
FROM matches m
FROM matches m
JOIN deck_signatures ds ON m.player_deck_id = ds.deck_id
JOIN deck_signatures ds ON m.player_deck_id = ds.deck_id
WHERE m.playertag = $1
WHERE m.playertag = $1
GROUP BY m.playertag, m.player_deck_id, m.clan_league, ds.cards, ds.evolutions
GROUP BY m.playertag, m.player_deck_id, m.clan_league, ds.cards, ds.evolutions
"""
"""
rows = await self.bot.pool.fetch(query, playertag)
rows = await self.bot.pool.fetch(query, playertag)
deck_rows3 = []
deck_rows3 = []
deck_rows4 = []
deck_rows4 = []
deck_rows5 = []
deck_rows5 = []
name = ''
name = ''
for row in rows:
for row in rows:
clan_league = int(np.clip(row.get('clan_league') // 1000, 0, 5))
clan_league = int(np.clip(row.get('clan_league') // 1000, 0, 5))
if name == '':
if name == '':
name = row.get('player_name')
name = row.get('player_name')
full_deck = combine_cards(row.get('evolutions'), row.get('cards'))
full_deck = combine_cards(row.get('evolutions'), row.get('cards'))
deck_data = {
deck_data = {
'cards': full_deck,
'cards': full_deck,
'wins': row.get('wins'),
'wins': row.get('wins'),
'losses': row.get('losses')
'losses': row.get('losses')
}
}
if clan_league == 5:
if clan_league == 5:
deck_rows5.append(deck_data)
deck_rows5.append(deck_data)
elif clan_league == 4:
elif clan_league == 4:
deck_rows4.append(deck_data)
deck_rows4.append(deck_data)
else:
else:
deck_rows3.append(deck_data)
deck_rows3.append(deck_data)
for deck_list in [deck_rows3, deck_rows4, deck_rows5]:
for deck_list in [deck_rows3, deck_rows4, deck_rows5]:
deck_list.sort(key=lambda x: (-x.get('wins'), x.get('losses')))
deck_list.sort(key=lambda x: (-x.get('wins'), x.get('losses')))
try:
try:
success3, pages3 = build_paginator_embeds(get_deck_strings(deck_rows3), name, playertag, '0-3')
success3, pages3 = build_paginator_embeds(get_deck_strings(deck_rows3), name, playertag, '0-3')
success4, pages4 = build_paginator_embeds(get_deck_strings(deck_rows4), name, playertag, '4')
success4, pages4 = build_paginator_embeds(get_deck_strings(deck_rows4), name, playertag, '4')
success5, pages5 = build_paginator_embeds(get_deck_strings(deck_rows5), name, playertag, '5')
success5, pages5 = build_paginator_embeds(get_deck_strings(deck_rows5), name, playertag, '5')
except ValueError as e:
except ValueError as e:
return await ctx.respond(embed=discord.Embed(description=str(e), color=discord.Color.red()))
return await ctx.respond(embed=discord.Embed(description=str(e), color=discord.Color.red()))
page_groups = []
page_groups = []
if success3:
if success3:
page_groups.append(pages.PageGroup(pages=pages3, label='League 0-3'))
page_groups.append(pages.PageGroup(pages=pages3, label='League 0-3'))
if success4:
if success4:
page_groups.append(pages.PageGroup(pages=pages4, label='League 4'))
page_groups.append(pages.PageGroup(pages=pages4, label='League 4'))
if success5:
if success5:
page_groups.append(pages.PageGroup(pages=pages5, label='League 5', default=True))
page_groups.append(pages.PageGroup(pages=pages5, label='League 5', default=True))
if not page_groups:
if not page_groups:
return await ctx.respond(
return await ctx.respond(
embed=discord.Embed(
embed=discord.Embed(
description="No decks available for any league.",
description="No decks available for any league.",
color=discord.Color.red()
color=discord.Color.red()
)
)
)
)
paginator = pages.Paginator(
paginator = pages.Paginator(
pages=page_groups,
pages=page_groups,
show_menu=True, menu_placeholder=f'Select League',
show_menu=True, menu_placeholder=f'Select League',
show_disabled=False, show_indicator=True
show_disabled=False, show_indicator=True
)
)
await paginator.respond(ctx.interaction, ephemeral=False)
await paginator.respond(ctx.interaction, ephemeral=False)
def setup(bot):
def setup(bot):
Kopieren
Kopiert
Kopieren
Kopiert
bot.add_cog(Player
(bot))
bot.add_cog(Player
Test
(bot))
Gespeicherte Diffs
Originaltext
Datei öffnen
import discord import numpy as np from discord.ext import commands, pages import os from discord_bot.utils.cr_functions import combine_cards, get_deck_strings, build_paginator_embeds from discord_bot.utils import emoji_cache from discord_bot.utils.embeds import not_in_database, database_error, error_embed from discord_bot.utils.emoji_cache import MISC_EMOJIS # https://guide.pycord.dev/popular-topics/cogs class Player(commands.Cog): def __init__(self, bot): self.bot = bot async def check_valid_playertag(self, playertag): print(playertag, '#' + playertag.replace('#', '').strip().upper().replace('O', '0')) playertag = '#' + playertag.replace('#', '').strip().upper().replace('O', '0') playertag_exists = await self.bot.pool.fetchval(f"SELECT EXISTS " f"(SELECT 1 FROM players WHERE playertag = $1)", playertag) if not playertag_exists: return False, not_in_database('playertag', playertag) return True, playertag player = discord.SlashCommandGroup('player', 'Player related commands.') @discord.option('playertag', type=str) @player.command(description='Show a basic overview for this playertag.') async def basic_info(self, ctx, playertag): await ctx.defer() is_valid, result = await self.check_valid_playertag(playertag) # Check if exists in db, else return non-existent if not is_valid: return await ctx.respond(embed=result) playertag = result query = """ SELECT p.player_name, COUNT(*) FILTER (WHERE TRUE) AS total, COUNT(*) FILTER (WHERE match_result = 'win') AS wins, COUNT(*) FILTER (WHERE match_result = 'loss') AS losses, COUNT(*) FILTER (WHERE match_result = 'throw') AS throws, COUNT(*) FILTER (WHERE match_result = 'tie') AS ties FROM matches m JOIN players p on m.playertag = p.playertag WHERE m.playertag = $1 GROUP BY p.player_name """ row = await self.bot.pool.fetchrow(query, playertag) total_matches = row["total"] wins = row["wins"] losses = row["losses"] throws = row["throws"] ties = row["ties"] name = row["player_name"] if wins + losses == 0: win_rate = 0 else: win_rate = (wins / (wins + losses)) * 100 embed = discord.Embed( title=f'{name} ({playertag})', color=discord.Color.dark_blue(), ) embed.set_footer(text='Basic Overview') embed.set_thumbnail(url=os.getenv('BOT_IMAGE')) embed.add_field(name=f'__Matches__ {MISC_EMOJIS.get('clan_war_wins')}', value=f'{total_matches}') embed.add_field(name=f'__Win Rate__ 📈', value=f'{win_rate:.2f}%', inline=True) embed.add_field(name=f'__Wins__ {MISC_EMOJIS.get('win3crowns')}', value=wins, inline=True) embed.add_field(name=f'__Losses__ {MISC_EMOJIS.get('lose3crowns')}', value=losses, inline=True) embed.add_field(name=f'__Throws__', value=throws) embed.add_field(name=f'__Ties__ {MISC_EMOJIS.get('blue_crown')}{MISC_EMOJIS.get('red_crown')}', value=ties) await ctx.respond(embed=embed) @player.command(description='Show the war decks for this playertag.') @discord.option('playertag', type=str) async def decks(self, ctx, playertag): await ctx.defer() is_valid, result = await self.check_valid_playertag(playertag) # Check if exists in db, else return it didnt exist if not is_valid: return await ctx.respond(embed=result) playertag = result query = """ SELECT m.playertag, m.player_deck_id, m.clan_league, ds.cards, ds.evolutions, MAX(m.player_name) AS player_name, -- optional, latest name COUNT(*) FILTER (WHERE m.match_result = 'win') AS wins, COUNT(*) FILTER (WHERE m.match_result = 'loss') AS losses FROM matches m JOIN deck_signatures ds ON m.player_deck_id = ds.deck_id WHERE m.playertag = $1 GROUP BY m.playertag, m.player_deck_id, m.clan_league, ds.cards, ds.evolutions """ rows = await self.bot.pool.fetch(query, playertag) deck_rows3 = [] deck_rows4 = [] deck_rows5 = [] name = '' for row in rows: clan_league = int(np.clip(row.get('clan_league') // 1000, 0, 5)) if name == '': name = row.get('player_name') full_deck = combine_cards(row.get('evolutions'), row.get('cards')) deck_data = { 'cards': full_deck, 'wins': row.get('wins'), 'losses': row.get('losses') } if clan_league == 5: deck_rows5.append(deck_data) elif clan_league == 4: deck_rows4.append(deck_data) else: deck_rows3.append(deck_data) for deck_list in [deck_rows3, deck_rows4, deck_rows5]: deck_list.sort(key=lambda x: (-x.get('wins'), x.get('losses'))) try: success3, pages3 = build_paginator_embeds(get_deck_strings(deck_rows3), name, playertag, '0-3') success4, pages4 = build_paginator_embeds(get_deck_strings(deck_rows4), name, playertag, '4') success5, pages5 = build_paginator_embeds(get_deck_strings(deck_rows5), name, playertag, '5') except ValueError as e: return await ctx.respond(embed=discord.Embed(description=str(e), color=discord.Color.red())) page_groups = [] if success3: page_groups.append(pages.PageGroup(pages=pages3, label='League 0-3')) if success4: page_groups.append(pages.PageGroup(pages=pages4, label='League 4')) if success5: page_groups.append(pages.PageGroup(pages=pages5, label='League 5', default=True)) if not page_groups: return await ctx.respond( embed=discord.Embed( description="No decks available for any league.", color=discord.Color.red() ) ) paginator = pages.Paginator( pages=page_groups, show_menu=True, menu_placeholder=f'Select League', show_disabled=False, show_indicator=True ) await paginator.respond(ctx.interaction, ephemeral=False) def setup(bot): bot.add_cog(Player(bot))
Bearbeitung
Datei öffnen
import discord import numpy as np from discord.ext import commands, pages import os from discord_bot.utils.cr_functions import combine_cards, get_deck_strings, build_paginator_embeds from discord_bot.utils import emoji_cache from discord_bot.utils.embeds import not_in_database from discord_bot.utils.emoji_cache import MISC_EMOJIS # https://guide.pycord.dev/popular-topics/cogs class PlayerTest(commands.Cog): def __init__(self, bot): self.bot = bot async def check_valid_playertag(self, playertag): print(playertag, '#' + playertag.replace('#', '').strip().upper().replace('O', '0')) playertag = '#' + playertag.replace('#', '').strip().upper().replace('O', '0') playertag_exists = await self.bot.pool.fetchval(f"SELECT EXISTS " f"(SELECT 1 FROM players WHERE playertag = $1)", playertag) if not playertag_exists: return False, not_in_database('playertag', playertag) return True, playertag player2 = discord.SlashCommandGroup('player2', 'Player related commands.') @discord.option('playertag', type=str) @player2.command(description='Show a basic overview for this playertag.') async def basic_info(self, ctx, playertag): await ctx.defer() is_valid, result = await self.check_valid_playertag(playertag) # Check if exists in db, else return non-existent if not is_valid: return await ctx.respond(embed=result) playertag = result query = """ SELECT p.player_name, COUNT(*) FILTER (WHERE TRUE) AS total, COUNT(*) FILTER (WHERE match_result = 'win') AS wins, COUNT(*) FILTER (WHERE match_result = 'loss') AS losses, COUNT(*) FILTER (WHERE match_result = 'throw') AS throws, COUNT(*) FILTER (WHERE match_result = 'tie') AS ties FROM matches m JOIN players p on m.playertag = p.playertag WHERE m.playertag = $1 GROUP BY p.player_name """ row = await self.bot.pool.fetchrow(query, playertag) total_matches = row["total"] wins = row["wins"] losses = row["losses"] throws = row["throws"] ties = row["ties"] name = row["player_name"] if wins + losses == 0: win_rate = 0 else: win_rate = (wins / (wins + losses)) * 100 embed = discord.Embed( title=f'{name} ({playertag})', color=discord.Color.dark_blue(), ) embed.set_footer(text='Basic Overview') embed.set_thumbnail(url=os.getenv('BOT_IMAGE')) embed.add_field(name=f'__Matches__ {MISC_EMOJIS.get('clan_war_wins')}', value=f'{total_matches}') embed.add_field(name=f'__Win Rate__ 📈', value=f'{win_rate:.2f}%', inline=True) embed.add_field(name=f'__Wins__ {MISC_EMOJIS.get('win3crowns')}', value=wins, inline=True) embed.add_field(name=f'__Losses__ {MISC_EMOJIS.get('lose3crowns')}', value=losses, inline=True) embed.add_field(name=f'__Throws__', value=throws) embed.add_field(name=f'__Ties__ {MISC_EMOJIS.get('blue_crown')}{MISC_EMOJIS.get('red_crown')}', value=ties) await ctx.respond(embed=embed) @player2.command(description='Show the war decks for this playertag.') @discord.option('playertag', type=str) async def decks_fail(self, ctx, playertag): await ctx.defer() is_valid, result = await self.check_valid_playertag(playertag) # Check if exists in db, else return it didnt exist if not is_valid: return await ctx.respond(embed=result) playertag = result query = """ SELECT m.playertag, m.player_deck_id, m.clan_league, ds.cards, ds.evolutions, MAX(m.player_name) AS player_name, -- optional, latest name COUNT(*) FILTER (WHERE m.match_result = 'win') AS wins, COUNT(*) FILTER (WHERE m.match_result = 'loss') AS losses FROM matches m JOIN deck_signatures ds ON m.player_deck_id = ds.deck_id WHERE m.playertag = $1 GROUP BY m.playertag, m.player_deck_id, m.clan_league, ds.cards, ds.evolutions """ rows = await self.bot.pool.fetch(query, playertag) deck_rows3 = [] deck_rows4 = [] deck_rows5 = [] name = '' for row in rows: clan_league = int(np.clip(row.get('clan_league') // 1000, 0, 5)) if name == '': name = row.get('player_name') full_deck = combine_cards(row.get('evolutions'), row.get('cards')) deck_data = { 'cards': full_deck, 'wins': row.get('wins'), 'losses': row.get('losses') } if clan_league == 5: deck_rows5.append(deck_data) elif clan_league == 4: deck_rows4.append(deck_data) else: deck_rows3.append(deck_data) for deck_list in [deck_rows3, deck_rows4, deck_rows5]: deck_list.sort(key=lambda x: (-x.get('wins'), x.get('losses'))) try: success3, pages3 = build_paginator_embeds(get_deck_strings(deck_rows3), name, playertag, '0-3') success4, pages4 = build_paginator_embeds(get_deck_strings(deck_rows4), name, playertag, '4') success5, pages5 = build_paginator_embeds(get_deck_strings(deck_rows5), name, playertag, '5') except ValueError as e: return await ctx.respond(embed=discord.Embed(description=str(e), color=discord.Color.red())) page_groups = [] if success3: page_groups.append(pages.PageGroup(pages=pages3, label='League 0-3')) if success4: page_groups.append(pages.PageGroup(pages=pages4, label='League 4')) if success5: page_groups.append(pages.PageGroup(pages=pages5, label='League 5', default=True)) if not page_groups: return await ctx.respond( embed=discord.Embed( description="No decks available for any league.", color=discord.Color.red() ) ) paginator = pages.Paginator( pages=page_groups, show_menu=True, menu_placeholder=f'Select League', show_disabled=False, show_indicator=True ) await paginator.respond(ctx.interaction, ephemeral=False) def setup(bot): bot.add_cog(PlayerTest(bot))
Unterschied finden