Advertisement
LawMixer

s

Feb 18th, 2023
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 KB | None | 0 0
  1. import firebase_admin, random, string, asyncio, os, socket, sys, http, interactions, datetime
  2.  
  3. from firebase_admin import credentials, db
  4. from dateutil import parser as du_parser
  5. from datetime import datetime
  6. from dotenv import load_dotenv
  7. from twitchAPI.twitch import Twitch
  8. from twitchAPI.oauth import UserAuthenticator
  9. from twitchAPI.types import AuthScope
  10. from twitchAPI.oauth import refresh_access_token
  11. from twitchAPI.twitch import Twitch
  12. from twitchAPI.helper import first
  13. from twitchAPI.eventsub import EventSub
  14.  
  15.  
  16. load_dotenv()
  17. CLIENT_ID = os.getenv('CLIENT_ID')
  18. CLIENT_SECRET = os.getenv('CLIENT_SECRET')
  19. EVENTSUB_URL = "https://twitch.lawmixerscpf.tk"
  20. OAUTH_TOKEN = os.getenv('OAUTH_TOKEN')
  21. OAUTH_REFRESH_TOKEN = os.getenv('OAUTH_REFRESH_TOKEN')
  22.  
  23. bot = interactions.Client(
  24. token=os.environ["DISCORD_TOKEN"],
  25. intents= interactions.Intents.ALL | interactions.Intents.GUILD_MESSAGE_CONTENT)
  26.  
  27. bot.load("events.event")
  28.  
  29. cred = credentials.Certificate("s")
  30.  
  31. default_app = firebase_admin.initialize_app(cred, {
  32. 'databaseURL': "s"
  33. })
  34.  
  35. async def stream_online(data: dict):
  36. #{'subscription': {'id': '3a775616-f352-48e1-9784-a3eb4441977c', 'status': 'enabled', 'type': 'stream.online', 'version': '1', 'condition': {'broadcaster_user_id': '128722026'}, 'transport': {'method': 'webhook', 'callback': 'https://twitch.lawmixerscpf.tk/callback'}, 'created_at': '2023-02-16T20:58:59.458463575Z', 'cost': 1}, 'event': {'id': '47981621437', 'broadcaster_user_id': '128722026', 'broadcaster_user_login': 'alexmasongaming', 'broadcaster_user_name': 'AlexMasonGaming', 'type': 'live', 'started_at': '2023-02-16T22:04:23Z'}}
  37. streamerName = data["event"]["broadcaster_user_login"]
  38. started_at = data["event"]["started_at"]
  39. timestamp = du_parser.isoparse(started_at).timestamp()
  40.  
  41.  
  42. streamerId = data["event"]["broadcaster_user_id"]
  43.  
  44.  
  45. channel_id = int(db.reference(f"/streamers/{streamerId}/channel_id").get())
  46. guild_id = int(db.reference(f"/streamers/{streamerId}/guild_id").get())
  47.  
  48. guild = await interactions.get(bot, interactions.Guild, object_id=int(guild_id))
  49.  
  50. for channel in guild.channels:
  51. if channel.id == channel_id:
  52. if data["subscription"]["type"] == "stream.online":
  53. await sendChann.send("This is a test message.")
  54.  
  55. async def main():
  56. twitch = await Twitch(CLIENT_ID, CLIENT_SECRET)
  57.  
  58. new_token, new_refresh_token = await refresh_access_token(OAUTH_REFRESH_TOKEN, CLIENT_ID, CLIENT_SECRET)
  59.  
  60. await twitch.set_user_authentication(new_token, [], new_refresh_token, validate=True)
  61.  
  62. event_sub = EventSub(EVENTSUB_URL, CLIENT_ID, 8080, twitch)
  63.  
  64. await event_sub.unsubscribe_all()
  65.  
  66. event_sub.start()
  67.  
  68. for streamer_id in db.reference("/streamers/").get():
  69. await event_sub.listen_stream_online(str(streamer_id), stream_online)
  70.  
  71.  
  72.  
  73. loop = asyncio.get_event_loop()
  74.  
  75. task1 = loop.create_task(main())
  76. task2 = loop.create_task(bot._ready())
  77.  
  78. gathered = asyncio.gather(task1, task2)
  79. loop.run_until_complete(gathered)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement