Skip to content

Commit a9de3cd

Browse files
authored
Modify current member (#1403)
1 parent c49985b commit a9de3cd

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

src/Discord/Repository/Guild/MemberRepository.php

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,14 @@
1414
namespace Discord\Repository\Guild;
1515

1616
use Discord\Http\Endpoint;
17+
use Discord\Http\Exceptions\NoPermissionsException;
1718
use Discord\Parts\User\Member;
1819
use Discord\Repository\AbstractRepository;
1920
use React\Promise\Deferred;
2021
use React\Promise\PromiseInterface;
2122

23+
use function React\Promise\reject;
24+
2225
/**
2326
* Contains members of a guild.
2427
*
@@ -46,6 +49,44 @@ class MemberRepository extends AbstractRepository
4649
];
4750

4851
/**
52+
* Modifies the current member (no validation).
53+
*
54+
* @link https://discord.com/developers/docs/resources/guild#modify-current-member-json-params
55+
*
56+
* @since 10.20.0
57+
*
58+
* @param array $params The parameters to modify.
59+
* @param ?string|null $params['nick'] Value to set user's nickname to.
60+
* @param ?string|null $params['banner'] Data URI base64 encoded banner image.
61+
* @param ?string|null $params['avatar'] Data URL base64 encoded avatar image.
62+
* @param ?string|null $params['bio'] Guild member bio.
63+
* @param string|null $reason Reason for Audit Log.
64+
*
65+
* @return PromiseInterface<self>
66+
*/
67+
public function modifyCurrentMember(array $params, ?string $reason = null): PromiseInterface
68+
{
69+
$allowed = ['nick', 'banner', 'avatar', 'bio'];
70+
$params = array_filter(
71+
$params,
72+
fn ($key) => in_array($key, $allowed, true),
73+
ARRAY_FILTER_USE_KEY
74+
);
75+
76+
if (empty($params)) {
77+
return reject(new \InvalidArgumentException('No valid parameters to modify.'));
78+
}
79+
80+
$headers = [];
81+
if (isset($reason)) {
82+
$headers['X-Audit-Log-Reason'] = $reason;
83+
}
84+
85+
return $this->http->patch(Endpoint::bind(Endpoint::GUILD_MEMBER_SELF, $this->guild_id), $params, $headers);
86+
}
87+
88+
/**
89+
* {@inheritDoc}
4990
* @inheritDoc
5091
*/
5192
protected $class = Member::class;

0 commit comments

Comments
 (0)