rework auth a little
This commit is contained in:
97
src/setup/setup-auth.ts
Normal file
97
src/setup/setup-auth.ts
Normal file
@@ -0,0 +1,97 @@
|
||||
import { exchangeCode } from "@twurple/auth";
|
||||
import { Config } from "../config/config.ts";
|
||||
import { TokenManager } from "../core/token-manager.ts";
|
||||
import { TwitchAuth } from "../util/auth.ts";
|
||||
import { logInfo } from "../util/logger.ts";
|
||||
|
||||
const port = 3000;
|
||||
const redirectUri = `http://localhost:${port}`;
|
||||
const scopes = [
|
||||
"analytics:read:extensions",
|
||||
"analytics:read:games",
|
||||
"bits:read",
|
||||
"channel:manage:ads",
|
||||
"channel:read:ads",
|
||||
"channel:manage:broadcast",
|
||||
"channel:read:charity",
|
||||
"channel:edit:commercial",
|
||||
"channel:read:editors",
|
||||
"channel:manage:extensions",
|
||||
"channel:read:goals",
|
||||
"channel:read:guest_star",
|
||||
"channel:manage:guest_star",
|
||||
"channel:read:hype_train",
|
||||
"channel:manage:moderators",
|
||||
"channel:read:polls",
|
||||
"channel:manage:polls",
|
||||
"channel:read:predictions",
|
||||
"channel:manage:predictions",
|
||||
"channel:manage:raids",
|
||||
"channel:read:redemptions",
|
||||
"channel:manage:redemptions",
|
||||
"channel:manage:schedule",
|
||||
"channel:read:stream_key",
|
||||
"channel:read:subscriptions",
|
||||
"channel:manage:videos",
|
||||
"channel:read:vips",
|
||||
"channel:manage:vips",
|
||||
"clips:edit",
|
||||
"moderation:read",
|
||||
"moderator:manage:announcements",
|
||||
"moderator:manage:automod",
|
||||
"moderator:read:automod_settings",
|
||||
"moderator:manage:automod_settings",
|
||||
"moderator:manage:banned_users",
|
||||
"moderator:read:blocked_terms",
|
||||
"moderator:manage:blocked_terms",
|
||||
"moderator:manage:chat_messages",
|
||||
"moderator:read:chat_settings",
|
||||
"moderator:manage:chat_settings",
|
||||
"moderator:read:chatters",
|
||||
"moderator:read:followers",
|
||||
"moderator:read:guest_star",
|
||||
"moderator:manage:guest_star",
|
||||
"moderator:read:shield_mode",
|
||||
"moderator:manage:shield_mode",
|
||||
"moderator:read:shoutouts",
|
||||
"moderator:manage:shoutouts",
|
||||
"moderator:read:unban_requests",
|
||||
"moderator:manage:unban_requests",
|
||||
"user:edit",
|
||||
"user:edit:follows",
|
||||
"user:read:blocked_users",
|
||||
"user:manage:blocked_users",
|
||||
"user:read:broadcast",
|
||||
"user:manage:chat_color",
|
||||
"user:read:email",
|
||||
"user:read:emotes",
|
||||
"user:read:follows",
|
||||
"user:read:moderated_channels",
|
||||
"user:read:subscriptions",
|
||||
"user:manage:whispers",
|
||||
"channel:bot",
|
||||
"channel:moderate",
|
||||
"chat:edit",
|
||||
"chat:read",
|
||||
"user:bot",
|
||||
"user:read:chat",
|
||||
"user:write:chat",
|
||||
"whispers:read",
|
||||
"whispers:edit",
|
||||
"moderator:manage:warnings",
|
||||
];
|
||||
|
||||
const auth = new TwitchAuth(redirectUri);
|
||||
const state = auth.generateState();
|
||||
const authUrl = auth.getAuthorizationUrl(scopes, state);
|
||||
logInfo("To authorize your Twitch bot, visit this URL:");
|
||||
logInfo(authUrl);
|
||||
const code = await auth.startCallbackServer(port, 120, state);
|
||||
|
||||
const tokenManager = new TokenManager(Config.bot_user_id);
|
||||
|
||||
tokenManager.createTokenFile(
|
||||
await exchangeCode(Config.client_id, Config.client_secret, code, redirectUri),
|
||||
);
|
||||
|
||||
logInfo("Token file created");
|
||||
Reference in New Issue
Block a user