Проблема такая:
При запуске бота он запускается (то есть появляется в онлайне) но в консоли ничего не пишется и бот не реагирует на команды
import discord
from discord.ext import commands, tasks
import requests
import json
import asyncio
# Конфигурация
TOKEN = 'мой токен'
CHANNEL_ID = 1120311070179991682
TWITCH_CLIENT_ID = 'мой токен'
YOUTUBE_API_KEY = 'мой токен'
# Создание клиента Discord и определение префикса команд
intents = discord.Intents.default()
intents.typing = False
intents.presences = False
bot = commands.Bot(command_prefix='/', intents=intents)
# Словарь для хранения списка добавленных каналов Twitch и YouTube
users = {
'twitch': [],
'youtube': []
}
# Функция для отправки сообщения в определенный канал
async def send_message(channel_id, message):
channel = bot.get_channel(channel_id)
await channel.send(message)
# Команда для добавления канала Twitch
@bot.command(name='add-twitch')
async def add_twitch(ctx, channel_name):
if channel_name.lower() not in users['twitch']:
users['twitch'].append(channel_name.lower())
await ctx.send(f'Канал Twitch {channel_name} добавлен.')
else:
await ctx.send(f'Канал Twitch {channel_name} уже добавлен.')
# Команда для добавления канала YouTube
@bot.command(name='add-youtube')
async def add_youtube(ctx, channel_id):
if channel_id not in users['youtube']:
users['youtube'].append(channel_id)
await ctx.send(f'Канал YouTube {channel_id} добавлен.')
else:
await ctx.send(f'Канал YouTube {channel_id} уже добавлен.')
# Команда для отображения списка добавленных каналов Twitch
@bot.command(name='users-twitch')
async def show_twitch_users(ctx):
if len(users['twitch']) > 0:
user_list = '\n'.join(users['twitch'])
await ctx.send(f'Список добавленных каналов Twitch:\n{user_list}')
else:
await ctx.send('Список добавленных каналов Twitch пуст.')
# Команда для отображения списка добавленных каналов YouTube
@bot.command(name='users-youtube')
async def show_youtube_users(ctx):
if len(users['youtube']) > 0:
user_list = '\n'.join(users['youtube'])
await ctx.send(f'Список добавленных каналов YouTube:\n{user_list}')
else:
await ctx.send('Список добавленных каналов YouTube пуст.')
# Функция для получения информации о стримах на Twitch
def get_twitch_streams():
headers = {'Client-ID': TWITCH_CLIENT_ID}
streams = []
for channel_name in users['twitch']:
url = f'https://api.twitch.tv/helix/streams?user_login={channel_name}'
response = requests.get(url, headers=headers)
data = json.loads(response.text)
if 'data' in data and len(data['data']) > 0:
streams.append(data['data'][0])
return streams
# Функция для получения информации о новых видео на YouTube
def get_youtube_videos():
videos = []
for channel_id in users['youtube']:
url = f'https://www.googleapis.com/youtube/v3/search?key={YOUTUBE_API_KEY}&channelId={channel_id}&part=snippet,id&order=date&maxResults=1'
response = requests.get(url)
data = json.loads(response.text)
if 'items' in data and len(data['items']) > 0:
videos.append(data['items'][0])
return videos
# Функция для проверки новых стримов на Twitch и отправки оповещений
async def check_twitch_streams():
await bot.wait_until_ready()
while not bot.is_closed():
streams = get_twitch_streams()
for stream in streams:
channel_name = stream['user_name']
stream_url = f'https://www.twitch.tv/{channel_name}'
message = f'<@&1120382725484974110> {channel_name} начал(а) трансляцию. Давай смотреть!\n{stream_url}'
await send_message(CHANNEL_ID, message)
await asyncio.sleep(300) # Проверка каждые 3 минут
# Функция для проверки новых видео на YouTube и отправки оповещений
async def check_youtube_videos():
await bot.wait_until_ready()
while not bot.is_closed():
videos = get_youtube_videos()
for video in videos:
channel_name = video['snippet']['channelTitle']
video_url = f'https://www.youtube.com/watch?v={video["id"]["videoId"]}'
message = f'<@&1120382725484974110> У {channel_name} вышло новое видео. Хочешь посмотреть?\n{video_url}'
await send_message(CHANNEL_ID, message)
await asyncio.sleep(300) # Проверка каждые 3 минут
# Асинхронная функция для запуска бота
async def run_bot():
await bot.start(TOKEN)
# Запуск бота
loop = asyncio.get_event_loop()
loop.create_task(run_bot())
loop.create_task(check_twitch_streams())
loop.create_task(check_youtube_videos())
try:
loop.run_forever()
except KeyboardInterrupt:
loop.run_until_complete(bot.logout())
finally:
loop.close()