✨ Create helpers to manage rewards status
This commit is contained in:
@@ -1,15 +1,17 @@
|
|||||||
import { AccessToken, RefreshingAuthProvider } from "@twurple/auth";
|
import { AccessToken, RefreshingAuthProvider } from "@twurple/auth";
|
||||||
|
import {
|
||||||
|
ApiClient,
|
||||||
|
HelixCreateCustomRewardData,
|
||||||
|
UserIdResolvable
|
||||||
|
} from "@twurple/api";
|
||||||
import { getTokenData, saveTokenData } from "./tokenData";
|
import { getTokenData, saveTokenData } from "./tokenData";
|
||||||
|
|
||||||
import { ApiClient } from "@twurple/api";
|
|
||||||
import { ClientCredentials } from "../../interfaces/ClientCredentials";
|
import { ClientCredentials } from "../../interfaces/ClientCredentials";
|
||||||
|
|
||||||
const LOG_PREFIX = "[Twitch] ";
|
const LOG_PREFIX = "[Twitch] ";
|
||||||
|
|
||||||
let refreshAuthProvider: RefreshingAuthProvider;
|
let refreshAuthProvider: RefreshingAuthProvider;
|
||||||
|
|
||||||
export { getAuthProvider, getApiClient, getUsernameFromId };
|
|
||||||
|
|
||||||
function getClientCredentials(): ClientCredentials {
|
function getClientCredentials(): ClientCredentials {
|
||||||
if (!process.env.TWITCH_CLIENT_ID || !process.env.TWITCH_CLIENT_SECRET) {
|
if (!process.env.TWITCH_CLIENT_ID || !process.env.TWITCH_CLIENT_SECRET) {
|
||||||
console.error(
|
console.error(
|
||||||
@@ -59,7 +61,7 @@ async function getApiClient(): Promise<ApiClient> {
|
|||||||
|
|
||||||
async function getUsernameFromId(userId: number): Promise<string | null> {
|
async function getUsernameFromId(userId: number): Promise<string | null> {
|
||||||
const apiClient = await getApiClient();
|
const apiClient = await getApiClient();
|
||||||
const user = await apiClient.helix.users.getUserById(userId);
|
const user = await apiClient.users.getUserById(userId);
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return null;
|
return null;
|
||||||
@@ -67,3 +69,59 @@ async function getUsernameFromId(userId: number): Promise<string | null> {
|
|||||||
|
|
||||||
return user.displayName;
|
return user.displayName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function createReward(
|
||||||
|
channel: UserIdResolvable,
|
||||||
|
data: HelixCreateCustomRewardData
|
||||||
|
) {
|
||||||
|
const apiClient = await getApiClient();
|
||||||
|
|
||||||
|
await apiClient.channelPoints.createCustomReward(channel, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function completeRewards(
|
||||||
|
channel: UserIdResolvable,
|
||||||
|
rewardId: string,
|
||||||
|
redemptionIds: Array<string> | string
|
||||||
|
) {
|
||||||
|
if (!Array.isArray(redemptionIds)) {
|
||||||
|
redemptionIds = [redemptionIds];
|
||||||
|
}
|
||||||
|
|
||||||
|
const apiClient = await getApiClient();
|
||||||
|
|
||||||
|
await apiClient.channelPoints.updateRedemptionStatusByIds(
|
||||||
|
channel,
|
||||||
|
rewardId,
|
||||||
|
redemptionIds,
|
||||||
|
"FULFILLED"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function cancelRewards(
|
||||||
|
channel: UserIdResolvable,
|
||||||
|
rewardId: string,
|
||||||
|
redemptionIds: Array<string> | string
|
||||||
|
) {
|
||||||
|
if (!Array.isArray(redemptionIds)) {
|
||||||
|
redemptionIds = [redemptionIds];
|
||||||
|
}
|
||||||
|
|
||||||
|
const apiClient = await getApiClient();
|
||||||
|
|
||||||
|
await apiClient.channelPoints.updateRedemptionStatusByIds(
|
||||||
|
channel,
|
||||||
|
rewardId,
|
||||||
|
redemptionIds,
|
||||||
|
"CANCELED"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
getAuthProvider,
|
||||||
|
getApiClient,
|
||||||
|
getUsernameFromId,
|
||||||
|
completeRewards,
|
||||||
|
cancelRewards,
|
||||||
|
createReward
|
||||||
|
};
|
||||||
|
Reference in New Issue
Block a user