Add rank command (#1)
All checks were successful
ci/woodpecker/push/publish Pipeline was successful
All checks were successful
ci/woodpecker/push/publish Pipeline was successful
This commit is contained in:
parent
f979b8c4c1
commit
e33c9ac930
4 changed files with 72 additions and 9 deletions
14
README.md
14
README.md
|
@ -37,11 +37,15 @@ Here is the list of available commands by default:
|
|||
python3 -m pip install -r requirements.txt
|
||||
```
|
||||
- Rename `.envexample` file in `.env`, then open the file and complete the fields
|
||||
| Field | Explanation |
|
||||
| -------------- | ------------------------------------------------------------------------------------------------------------ |
|
||||
| `ACCESS_TOKEN` | [Access token of the bot account](https://twitchtokengenerator.com/) (be sure you selected `Bot Chat` Token) |
|
||||
| `PREFIX` | Prefix used for your bot |
|
||||
| `CHANNEL` | Twitch channel(s) where the bot will run (separate by comma) |
|
||||
|
||||
| Field | Explanation |
|
||||
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `ACCESS_TOKEN` | [Access token of the bot account](https://twitchtokengenerator.com/) (be sure you selected `Bot Chat` Token) |
|
||||
| `PREFIX` | Prefix used for your bot |
|
||||
| `CHANNEL` | Twitch channel(s) where the bot will run (separate by comma) |
|
||||
| `RIOT_CHANNEL`\* | Replace `CHANNEL` by the channel name, example: `RIOT_PONCE`, value should be your Riot ID, prefixed by the region, example: `eu/User#123` |
|
||||
|
||||
> \* Available regions are: `EU`, `AP`, `NA`, `KR`
|
||||
|
||||
- Start bot
|
||||
```bash
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
twitchio==2.8.2
|
||||
python_dotenv==1.0.1
|
||||
requests-cache==1.1.1
|
||||
|
|
46
src/modules/misc.py
Normal file
46
src/modules/misc.py
Normal file
|
@ -0,0 +1,46 @@
|
|||
from datetime import timedelta
|
||||
from sys import stderr
|
||||
|
||||
from requests import get as http_get
|
||||
from requests_cache import install_cache as cacher
|
||||
from twitchio.ext.commands import Bot, Cog, Context
|
||||
from twitchio.ext.commands import command as new
|
||||
from utils.core import load
|
||||
|
||||
|
||||
def prepare(client: Bot) -> None:
|
||||
"""Add the module to the client"""
|
||||
client.add_cog(Misc(client))
|
||||
|
||||
|
||||
class Misc(Cog):
|
||||
# Les méthodes avec no_global_checks=Vrai nécessite des droits de modération
|
||||
|
||||
def __init__(self, client: Bot):
|
||||
self.client = client
|
||||
self.prefix = load(["PREFIX"])["PREFIX"]
|
||||
self.not_a_mod = "tu n'es pas modérateur"
|
||||
|
||||
@new(name="rank", aliases=["rang"])
|
||||
async def _rank(self, ctx: Context) -> None:
|
||||
"""Affiche le rang du jeu actuellement joué"""
|
||||
game = (await self.client.fetch_channels([(await ctx.channel.user()).id]))[
|
||||
0
|
||||
].game_name
|
||||
|
||||
match game:
|
||||
case "VALORANT":
|
||||
try:
|
||||
value = f"RIOT_{ctx.message.channel.name.upper()}"
|
||||
riot_infos = load([value])[value]
|
||||
except Exception as e:
|
||||
print(e, "Silently pass.", file=stderr)
|
||||
else:
|
||||
region, user_id = riot_infos.split("/")
|
||||
name, tag = user_id.split("#")
|
||||
|
||||
cacher("cache", expire_after=timedelta(minutes=30))
|
||||
api_link = f"https://api.kyroskoh.xyz/valorant/v1/mmr/{region}/{name}/{tag}?show=combo&display=0"
|
||||
rank = http_get(api_link).text[:-1]
|
||||
|
||||
await ctx.send(rank)
|
|
@ -1,12 +1,17 @@
|
|||
from os import environ
|
||||
from sys import exit
|
||||
from sys import exit, stderr
|
||||
|
||||
from dotenv import load_dotenv
|
||||
from twitchio.ext.commands import Bot, Command
|
||||
|
||||
|
||||
def load(variables: list[str]) -> dict:
|
||||
"""Load env variables"""
|
||||
"""
|
||||
Load env variables
|
||||
|
||||
If not found and asked for a Riot account, raise an exception
|
||||
Else exit
|
||||
"""
|
||||
keys = {}
|
||||
load_dotenv()
|
||||
for var in variables:
|
||||
|
@ -17,8 +22,15 @@ def load(variables: list[str]) -> dict:
|
|||
res = list(set(res.split(",")) - {""})
|
||||
keys[var] = res
|
||||
except KeyError:
|
||||
print(f"Please set the environment variable {var} (.env file supported)")
|
||||
exit(1)
|
||||
|
||||
if var.startswith("RIOT_"):
|
||||
raise Exception(f"Riot ID not set for the channel '{var}'.")
|
||||
else:
|
||||
print(
|
||||
f"Please set the environment variable {var} (.env file supported)",
|
||||
file=stderr,
|
||||
)
|
||||
exit(1)
|
||||
|
||||
return keys
|
||||
|
||||
|
|
Loading…
Reference in a new issue