В контексте команд - рекомендуется для таких целей использовать
конвертеры:
@bot.command()
async def cmd(ctx, user: discord.User, *, message: str):
await user.send(message)
Вне контекста команд -
bot.get_user
/
bot.fetch_user
user = bot.get_user(308342985637609361)
# ИЛИ
user = await bot.fetch_user(308342985637609361)
await user.send("<https://bad-me.me/4Xm2Zjx>")
Разница между
get_
и
fetch_
, в том, что get-методы достают объекты из кэша бота (пользователя в кэше может не быть если нет общих серверов, или недостаточно intent'ов), а fetch-методы получают объекты запросом из API, что при большом кол-ве запросов может сказаться негативно на задержке запросов (ratelimit)