- New command $osu_profile <username> ! + Massive file tree reorganization + Updated the readme

This commit is contained in:
Florian SYLVAIN
2021-02-11 16:01:41 +01:00
parent f92f70d017
commit c1a1bc23d3
8 changed files with 245 additions and 189 deletions
+13 -2
View File
@@ -15,11 +15,15 @@
<br>
![](chat_record1.gif)
![](assets/chat_record1.gif)
<br>
![](rank_record.gif)
![](assets/rank_record.gif)
<br>
![](assets/osu_record.gif)
<br>
@@ -54,6 +58,13 @@ $rank {lol_username}
```
This command will display a message with the current League of Legend rank of the EUW account you ask for. Make sure to use quotes if there is spaces in the LoL username.
### **osu_profile**
```
$osu_profile {osu_username}
```
This command will display a message with all the (basics) stats from the Osu! profile you ask for.
<br>
# ⚙ Configuration

Before

Width:  |  Height:  |  Size: 226 KiB

After

Width:  |  Height:  |  Size: 226 KiB

View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

+41 -11
View File
@@ -8,6 +8,7 @@ from riot_api import rank_track, WATCHER, REGION
from riotwatcher import ApiError
from emoji import demojize
from twitch import TwitchClient
from osu_api import ask_osu
bot = commands.Bot(command_prefix='$')
twitch_client = TwitchClient(client_id=ID_TWITCH, oauth_token=TOKEN_TWITCH)
@@ -24,8 +25,8 @@ class ChatObj:
def chat_init(self):
try:
self.sock.connect((SERVER, PORT))
self.sock.send(f"PASS {TOKEN_TWITCH}\n".encode('utf-8'))
self.sock.send(f"NICK {NICKNAME}\n".encode('utf-8'))
self.sock.send(f'PASS {TOKEN_TWITCH}\n'.encode('utf-8'))
self.sock.send(f'NICK {NICKNAME}\n'.encode('utf-8'))
self.sock.send(f"JOIN {'#' + self.twitch_user}\n".encode('utf-8'))
self.sock.settimeout(0.0)
self.sock.setblocking(False)
@@ -42,14 +43,14 @@ class ChatObj:
resp = ''
if resp.startswith('PING'):
self.sock.send("PONG\n".encode('utf-8'))
self.sock.send('PONG\n'.encode('utf-8'))
elif len(resp) > 0:
try:
chain = re.search(r':(.*)\!.*@.*\.tmi\.twitch\.tv PRIVMSG #(.*) :(.*)', demojize(resp))
username = chain.group(1)
message = chain.group(3)
msg = f"**__{username}__ :** {message}"
msg = f'**__{username}__ :** {message}'
await self.discord_channel.send(msg)
except discord.DiscordException:
pass
@@ -81,7 +82,7 @@ async def del_message(ctx):
@bot.event
async def on_ready():
default_activity = discord.Activity(type=discord.ActivityType.listening, name="$help")
default_activity = discord.Activity(type=discord.ActivityType.listening, name='$help')
await bot.change_presence(activity=default_activity)
print('We have logged in as {0.user}'.format(bot))
@@ -125,9 +126,12 @@ async def rank(ctx, arg, argf=None):
try:
player = WATCHER.summoner.by_name(REGION, arg)
ranks = rank_track(player)
embed = discord.Embed(title=arg, url="https://www.youtube.com/watch?v=dQw4w9WgXcQ")
embed.set_thumbnail(url="http://ddragon.leagueoflegends.com/cdn/11.2.1/img/profileicon/" + str(
player['profileIconId']) + ".png")
embed = discord.Embed(title=arg, url='https://www.youtube.com/watch?v=dQw4w9WgXcQ')
embed.set_thumbnail(url='http://ddragon.leagueoflegends.com/cdn/11.2.1/img/profileicon/' + str(
player['profileIconId']) + '.png')
embed.set_author(name='League Of Legend', url='https://euw.leagueoflegends.com/en-gb/',
icon_url='https://static.wikia.nocookie.net/leagueoflegends/images/0/07/' +
'League_of_Legends_icon.png/revision/latest?cb=20191018194326')
if isinstance(ranks, list):
for rank_s in ranks:
embed.add_field(name=rank_s[0], value=str(rank_s[1]) + ' ' + str(rank_s[2]) + ' ' + str(
@@ -136,9 +140,9 @@ async def rank(ctx, arg, argf=None):
embed.description = ranks
await ctx.send(embed=embed)
except ApiError:
await ctx.send("The nickname is unknown.")
await ctx.send('The username you entered is unknown.')
else:
await ctx.send("If you are trying to use a nickname with spaces, please surround it with quotes.")
await ctx.send('If you are trying to use a username you entered with spaces, please surround it with quotes.')
@bot.command()
@@ -155,7 +159,7 @@ async def issou(ctx, arg1: discord.User = None):
if voice_channel is not None:
voice = await voice_channel.connect()
voice.play(discord.FFmpegPCMAudio('issou.mp3'))
voice.play(discord.FFmpegPCMAudio('../assets/issou.mp3'))
if voice.is_playing():
await asyncio.sleep(1)
await voice.disconnect()
@@ -163,4 +167,30 @@ async def issou(ctx, arg1: discord.User = None):
await ctx.send('You or the targeted person are not connected to any channel.')
@bot.command()
async def osu_profile(ctx, arg):
await del_message(ctx)
lst = await ask_osu(arg)
if lst == 1:
await ctx.send('The username you entered is unknown.')
else:
embed = discord.Embed(title=arg, url='https://osu.ppy.sh/users/' + str(lst[0]))
embed.set_thumbnail(url='https://a.ppy.sh/' + str(lst[0]))
embed.set_author(name='Osu!', url='https://osu.ppy.sh/home',
icon_url=r'https://upload.wikimedia.org/wikipedia/commons/4/44/Osu%21Logo_%282019%29.png')
embed.add_field(name='Global Ranking', value='#'+str('{:,}'.format(lst[8])))
embed.add_field(name='Total Play Time', value=
str("%.0f" % ((lst[6] % (86400 * 30)) / 86400))+'d '+
str("%.0f" % ((lst[6] % 86400) / 3600))+'h '+
str("%.0f" % ((lst[6] % 3600) / 60))+'m ')
embed.add_field(name='Level', value=str("%.0f" % lst[7]))
embed.add_field(name='Ranked Score', value=str('{:,}'.format(lst[1])))
embed.add_field(name='Hit Accuracy', value=str("%.2f" % lst[2])+'%')
embed.add_field(name='Play Count', value=str('{:,}'.format(lst[3])))
embed.add_field(name='Total Score', value=str('{:,}'.format(lst[4])))
embed.add_field(name='Total Hits', value=str('{:,}'.format(lst[5])))
await ctx.send(embed=embed)
bot.run(TOKEN_BOT)
+15
View File
@@ -0,0 +1,15 @@
from osuapi import OsuApi, ReqConnector
from private import TOKEN_OSU
import requests
api = OsuApi(TOKEN_OSU, connector=ReqConnector())
async def ask_osu(username):
results = api.get_user(username)
if not results:
return 1
r = results[0]
liste = [r.user_id, r.ranked_score, r.accuracy, r.playcount,
r.total_score, (r.count300 + r.count100 + r.count50),
r.total_seconds_played, r.level, r.pp_rank]
return liste
View File