Skip to content

Commit 7994252

Browse files
author
Justin
committed
added spotify auth
1 parent e050566 commit 7994252

File tree

6 files changed

+308
-34
lines changed

6 files changed

+308
-34
lines changed

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
vendor
33
.idea
44
src/Media/Interact/*
5-
tmp/*
5+
tmp/*
6+
access_token.txt

bot.php

+17-31
Original file line numberDiff line numberDiff line change
@@ -47,39 +47,25 @@
4747
$commandHandler = new CommandHandler();
4848
$response = $commandHandler->runCommand($command, $args, $discord);
4949

50+
$embed = [
51+
'title' => $response['title'] ?? '',
52+
'color' => $response['color'] ?? hexdec('00FF00'),
53+
'description' => $response['content'] ?? ''
54+
];
55+
56+
$data = [
57+
'embeds' => [$embed],
58+
'flags' => $response['flags'] ?? 0,
59+
'file' => $response['file'] ?? ''
60+
];
61+
62+
$discord->getHttpClient()->post("/interactions/{$interaction->id}/{$interaction->token}/callback", [
63+
'type' => 4,
64+
'data' => $data
65+
]);
66+
5067
if (isset($response['file'])) {
51-
if (!isset($args['censor']) || !$args['censor']) {
52-
ImageHelper::deleteFiles();
53-
}
54-
$discord->getHttpClient()->post("/interactions/{$interaction->id}/{$interaction->token}/callback", [
55-
'type' => 4,
56-
'data' => [
57-
'embeds' => [
58-
[
59-
'title' => $response['title'] ?? '',
60-
'color' => $response['color'] ?? hexdec('00FF00')
61-
]
62-
],
63-
'flags' => $response['flags'] ?? 0,
64-
'file' => $response['file']
65-
]
66-
]);
6768
$channel->sendFile($response['file']);
68-
} else {
69-
$discord->getHttpClient()->post("/interactions/{$interaction->id}/{$interaction->token}/callback", [
70-
'type' => 4,
71-
'data' => [
72-
'embeds' => [
73-
[
74-
'title' => $response['title'] ?? '',
75-
'description' => $response['content'],
76-
'color' => $response['color'] ?? hexdec('00FF00')
77-
]
78-
],
79-
'flags' => $response['flags'] ?? 0
80-
]
81-
]);
82-
8369
}
8470
});
8571

composer.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
"team-reflex/discord-php": "^7.3",
44
"vlucas/phpdotenv": "^5.5",
55
"discord-php/slash": "^1.0",
6-
"ext-fileinfo": "*"
6+
"ext-fileinfo": "*",
7+
"cron/cron": "^1.8",
8+
"jwilsson/spotify-web-api-php": "^5.6"
79
}
810
}

composer.lock

+161-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

index.php

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
require 'vendor/autoload.php';
4+
5+
use Dotenv\Dotenv;
6+
use SpotifyWebAPI\Session;
7+
use SpotifyWebAPI\SpotifyWebAPI;
8+
9+
$dotenv = Dotenv::createImmutable(__DIR__);
10+
$dotenv->load();
11+
12+
$session = new Session(
13+
$_ENV['SPOTIFY_CLIENT_ID'],
14+
$_ENV['SPOTIFY_CLIENT_SECRET'],
15+
$_ENV['SPOTIFY_REDIRECT_URI']
16+
);
17+
18+
// Request a token using the code from Spotify
19+
$session->requestAccessToken($_GET['code']);
20+
$accessToken = $session->getAccessToken();
21+
22+
file_put_contents(__DIR__ . '/access_token.txt', $accessToken);
23+
24+
$api = new SpotifyWebAPI();
25+
$api->setAccessToken($accessToken);
26+
27+
$user = $api->me();
28+
29+
echo "<script>window.close();</script>";

src/Commands/Spotify.php

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
<?php
2+
3+
namespace Bot\Commands;
4+
5+
use SpotifyWebAPI\SpotifyWebAPI;
6+
use SpotifyWebAPI\Session;
7+
8+
9+
class Spotify
10+
{
11+
public function getName(): string
12+
{
13+
return 'spotify';
14+
}
15+
public function getDescription(): string
16+
{
17+
return 'Use spotify API to get the last 10 liked songs';
18+
}
19+
public function getOptions(): array
20+
{
21+
return [];
22+
}
23+
24+
public function handle()
25+
{
26+
// create a new session instance
27+
$session = new Session(
28+
$_ENV['SPOTIFY_CLIENT_ID'],
29+
$_ENV['SPOTIFY_CLIENT_SECRET'],
30+
$_ENV['SPOTIFY_REDIRECT_URI']
31+
);
32+
33+
// request authorization
34+
$options = [
35+
'scope' => [
36+
'user-read-email',
37+
'user-read-private',
38+
'user-library-read',
39+
'user-top-read',
40+
'user-read-recently-played',
41+
'user-read-playback-state',
42+
'user-read-currently-playing',
43+
'user-follow-read',
44+
'user-read-playback-position',
45+
'user-read-recently-played',
46+
'user-read-playback-state',
47+
'user-modify-playback-state',
48+
'user-read-currently-playing',
49+
'user-read-playback-position',
50+
'user-read-recently-played',
51+
'user-read-playback-state',
52+
'user-modify-playback-state',
53+
'user-read-currently-playing',
54+
'user-read-playback-position',
55+
'user-read-recently-played',
56+
'user-read-playback-state',
57+
'user-modify-playback-state',
58+
'user-read-currently-playing',
59+
'user-read-playback-position',
60+
'user-read-recently-played',
61+
'user-read-playback-state',
62+
'user-modify-playback-state',
63+
'user-read-currently-playing',
64+
'user-read-playback-position',
65+
'user-read-recently-played',
66+
'user-read-playback-state',
67+
'user-modify-playback-state',
68+
'user-read-currently-playing',
69+
'user-read-playback-position',
70+
'user-read-recently-played',
71+
'user-read-playback-state',
72+
'user-modify-playback-state',
73+
'user-read-currently-playing',
74+
'user-read-playback-position',
75+
'user-read-recently-played',
76+
'user-read-playback-state',
77+
'user-modify-playback-state',
78+
],
79+
];
80+
81+
//use the redirect uri to get the code from spotify
82+
$session->requestCredentialsToken($options['scope']);
83+
$accessToken = $session->getAccessToken();
84+
$refreshToken = $session->getRefreshToken();
85+
$api = new SpotifyWebAPI();
86+
$api->setAccessToken($accessToken);
87+
88+
$url = "https://accounts.spotify.com/authorize?client_id={$_ENV['SPOTIFY_CLIENT_ID']}&response_type=code&redirect_uri={$_ENV['SPOTIFY_REDIRECT_URI']}&scope=user-read-email%20user-read-private%20user-library-read%20user-top-read%20user-read-recently-played%20user-read-playback-state%20user-read-currently-playing%20user-follow-read%20user-read-playback-position%20user-read-recently-played%20user-read-playback-state%20user-modify-playback-state%20user-read-currently-playing%20user-read-playback-position%20user-read-recently-played%20user-read-playback-state%20user-modify-playback-state%20user-read-currently-playing%20user-read-playback-position%20user-read-recently-played%20user-read-playback-state%20user-modify-playback-state%20user-read-currently-playing%20user-read-playback-position%20user-read-recently-played%20user-read-playback-state%20user-modify-playback-state%20user-read-currently-playing%20user-read-playback-position%20user-read-recently-played%20user-read-playback-state%20user-modify-playback-state";
89+
return [
90+
'title' => 'Spotify',
91+
'content' => "Click [here]($url) to login to spotify",
92+
'flags' => 64,
93+
'color' => hexdec('34ebd8')
94+
];
95+
}
96+
}

0 commit comments

Comments
 (0)