- 1,434
- 292
привет.
попросил gemini и chatgpt написать мне скрипт для того чтобы когда из списка config.py указанный канал начнет стрим мне пришло уведомление. потом я срукожопил их вместе и как будто работает. но я уверен они и я где то накосячили.
если кому не лень посмотрите пожалуйста.
попросил gemini и chatgpt написать мне скрипт для того чтобы когда из списка config.py указанный канал начнет стрим мне пришло уведомление. потом я срукожопил их вместе и как будто работает. но я уверен они и я где то накосячили.
если кому не лень посмотрите пожалуйста.
bot.py:
import discord
import aiohttp
import asyncio
from config import (
DISCORD_TOKEN,
TWITCH_CLIENT_ID,
TWITCH_CLIENT_SECRET,
CHANNEL_ID,
TWITCH_CHANNELS
)
intents = discord.Intents.default()
client = discord.Client(intents=intents)
twitch_token = None
live_status = {name: False for name in TWITCH_CHANNELS}
async def get_twitch_token():
global twitch_token
url = "https://id.twitch.tv/oauth2/token"
params = {
"client_id": TWITCH_CLIENT_ID,
"client_secret": TWITCH_CLIENT_SECRET,
"grant_type": "client_credentials"
}
async with aiohttp.ClientSession() as session:
async with session.post(url, params=params) as resp:
data = await resp.json()
twitch_token = data["access_token"]
async def check_streams():
await client.wait_until_ready()
channel = client.get_channel(CHANNEL_ID)
headers = {
"Client-ID": TWITCH_CLIENT_ID,
"Authorization": f"Bearer {twitch_token}"
}
while not client.is_closed():
async with aiohttp.ClientSession(headers=headers) as session:
for streamer, note in TWITCH_CHANNELS.items():
url = f"https://api.twitch.tv/helix/streams?user_login={streamer}"
async with session.get(url) as resp:
data = await resp.json()
is_live = len(data["data"]) > 0
if is_live and not live_status[streamer]:
stream = data["data"][0]
title = stream["title"]
game = stream["game_name"]
embed = discord.Embed(
title=f"{streamer}",
description=title,
color=0x9146FF
)
embed.add_field(
name="",
value=f"*{note}*", # value=f"**Note:** {note}",
inline=False
)
embed.add_field(
name="",
value=f"{game}",
inline=False
)
embed.url = f"https://twitch.tv/{streamer}"
await channel.send(embed=embed)
live_status[streamer] = True
elif not is_live:
live_status[streamer] = False
await asyncio.sleep(60) # check every 60 seconds
@client.event
async def on_ready():
print(f"Logged in as {client.user}")
await get_twitch_token()
client.loop.create_task(check_streams())
client.run(DISCORD_TOKEN)
config.py:
DISCORD_TOKEN = "token"
TWITCH_CLIENT_ID = "id"
TWITCH_CLIENT_SECRET = "secret"
CHANNEL_ID = 123456
TWITCH_CHANNELS = {
"channel1": "note 1",
тут много каналов, больше 200, просто не стал вставить
"channel500": "note 500",
}
'''
?referrer=raid
'''
# replace:
# ^(\S+)\s+(.*)$
# with
# "$1": "$2",
Последнее редактирование: