async def _osu_most_recent(self, ctx, username: str, mode: str = 'osu!'): """ Get most recent osu! play for player. Available modes: - osu! - taiko - ctb - mania """ if mode.lower() == 'osu!': mode = 0 elif mode.lower() == 'taiko': mode = 1 elif mode.lower() == 'ctb': mode = 2 elif mode.lower() == 'mania' or mode.lower() == 'osu!mania': mode = 3 recentUrl = f'https://osu.ppy.sh/api/get_user_recent?k={c.data["osu"]}&u={username}&type=string&m={mode}' recentData = requests.get(recentUrl).json() beatmapUrl = f'https://osu.ppy.sh/api/get_beatmaps?k={c.data["osu"]}&b={recentData[0]["beatmap_id"]}' beatmapData = requests.get(beatmapUrl).json() embed = discord.Embed( title=f'most recent play for {username}', color=checks.getDominantColor( 'https://assets.ppy.sh/beatmaps/542081/covers/cover.jpg?1521116828' )) embed.set_thumbnail(url=( f'{scraper("https://osu.ppy.sh/beatmaps/"+recentData[0]["beatmap_id"])}' )) await ctx.send(embed=embed)
async def _display_image(self, ctx, *, url: str): """ Display an image in chat. """ embed = discord.Embed(title='', color=checks.getDominantColor(url), url='') embed.set_image(url=url) await ctx.send(embed=embed)
async def _osu_user(self, ctx, username: str, mode: str = 'osu!'): """ Get osu! user information. Available modes: - osu! - taiko - ctb - mania """ def getTopBeatmaps(amount: int = 1): result = '' bestUrl = f'https://osu.ppy.sh/api/get_user_best?k={c.data["osu"]}&m={mode}&limit=3&u={username}&type=string' bestData = requests.get(bestUrl).json() for times in range(amount): bestMapsUrl = f'https://osu.ppy.sh/api/get_beatmaps?k={c.data["osu"]}&b={bestData[times]["beatmap_id"]}' bestMapsData = requests.get(bestMapsUrl).json() result = f'{result}\n\t{times+1}. {bestMapsData[0]["title"]}' return result if mode.lower() == 'osu!': mode = 0 elif mode.lower() == 'taiko': mode = 1 elif mode.lower() == 'ctb': mode = 2 elif mode.lower() == 'mania' or mode.lower() == 'osu!mania': mode = 3 userUrl = f'https://osu.ppy.sh/api/get_user?k={c.data["osu"]}&m={mode}&u={username}&type=string' userData = requests.get(userUrl).json() embed = discord.Embed( title=f'osu! user information for {userData[0]["username"]}', color=checks.getDominantColor( f'https://a.ppy.sh/{userData[0]["user_id"]}')) embed.set_thumbnail(url=(f'https://a.ppy.sh/{userData[0]["user_id"]}')) embed.set_footer(text='') embed.add_field(name="Username:"******"username"], inline=True) embed.add_field(name="ID:", value=userData[0]["user_id"], inline=True) embed.add_field(name="Created:", value=userData[0]["join_date"], inline=True) embed.add_field(name="300:", value=userData[0]["count300"], inline=True) embed.add_field(name="100:", value=userData[0]["count100"], inline=True) embed.add_field(name="50:", value=userData[0]["count50"], inline=True) embed.add_field(name="Plays:", value=userData[0]["playcount"], inline=True) embed.add_field(name="Level:", value=userData[0]["level"], inline=True) embed.add_field(name="PP:", value=userData[0]["pp_raw"], inline=True) embed.add_field(name="Accuracy:", value=userData[0]["accuracy"], inline=True) embed.add_field( name="SS/SSH:", value= f'{userData[0]["count_rank_ss"]}/{userData[0]["count_rank_ssh"]}', inline=True) embed.add_field( name="S/SH:", value= f'{userData[0]["count_rank_s"]}/{userData[0]["count_rank_sh"]}', inline=True) embed.add_field(name="A:", value=userData[0]["count_rank_a"], inline=True) embed.add_field( name="Country:", value= f'{cc.countryCodes[userData[0]["country"]]} ({userData[0]["country"]})', inline=True) embed.add_field(name="Profile:", value=f'https://osu.ppy.sh/u/{userData[0]["user_id"]}', inline=True) embed.add_field(name="Top Scores:", value=getTopBeatmaps(3), inline=True) await ctx.send(embed=embed)
async def _reddit_meme(self, ctx, subreddit: str = 'random', section: str = 'random'): """ Get memes (images, gifs, videos) from a subreddit. Sections: - random - new - top - controversial - hot - rising """ try: reddits = ['PewdiepieSubmissions', 'memes', 'dankmemes', 'me_irl'] if subreddit.lower() == 'random': subreddit = random.choice(reddits) if section.lower() == 'random' or subreddit.lower() == 'random': num: int = random.randint(0, 24) section = 'new' else: num: int = 0 # requests # reddit has blocked the curl user agent, change it headers = {'User-Agent': 'rufus-agent'} url = f'https://reddit.com/r/{subreddit}/new/.json' data = requests.get(url, headers=headers).json() aboutUrl = f'https://reddit.com/r/{subreddit}/about.json' aboutData = requests.get(aboutUrl, headers=headers).json() userUrl = f"https://reddit.com/user/{data['data']['children'][num]['data']['author']}/about.json" userData = requests.get(userUrl, headers=headers).json() # check if the post is a video if bool(data['data']['children'][num]['data']['is_video']): mediaUrl = str(data['data']['children'][num]['data']['media'] ['reddit_video']['fallback_url']) else: mediaUrl = str(data['data']['children'][num]['data']['url']) selftext = str(data['data']['children'][num]['data']['selftext']) description = selftext if bool(selftext) else '' try: icon = str(userData['data']['icon_img']).split('?')[0] except: icon = '' embed = discord.Embed( title=str(data['data']['children'][num]['data']['title']), timestamp=datetime.datetime.fromtimestamp( int(data['data']['children'][num]['data']['created_utc'])), description=description, color=checks.getDominantColor(str(mediaUrl)), url='https://reddit.com' + data['data']['children'][num]['data']['permalink']) embed.set_author( name='u/' + str(data['data']['children'][num]['data']['author']), icon_url=icon) embed.set_footer(text=str(data['data']['children'][num]['data'] ['subreddit_name_prefixed']), icon_url=str(aboutData['data']['icon_img'])) if bool(data['data']['children'][num]['data'] ['over_18']) and not ctx.message.channel.is_nsfw(): embed.add_field(name="NSFW", value=str(mediaUrl), inline=False) else: try: embed.set_image(url=mediaUrl) except: pass await ctx.send(embed=embed) except: # CommandInvokeError: Command raised an exception: KeyError: 'is_video' (subreddit doesn't exist) # CommandInvokeError: Command raised an exception: KeyError: 'data' (subreddit is restricted) await ctx.send('```Subreddit restricted or non-existent.```')