Получения сообщение от пользователя Discord.py

Как получить сообщение от пользователя? Там при выводе on_message(message) нигде нету сообщения.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
import discord from dotenv import load_dotenv from discord.ext import commands from datetime import datetime load_dotenv() intents = discord.Intents.default() intents.members = True client = commands.Bot(command_prefix=".", intents=intents) #client = discord.Client() @client.event async def on_ready(): print(f' has connected to Discord!') @client.event async def on_message(message): if message.author.bot == False: now = datetime.now() current_time = now.strftime("%D:%H:%M:%S") print(f" | chanel: | user: | message:") print(message) client.run("token")
Discord.py Как вывести копию сообщения по ID?

1. Как вывести с помощью функции (команды) копию сообщения по его ID? К примеру !copymsg «ID» дает «Hello» (и такое сообщение было написано кем-то раньше).
2. Как записать в переменную всё сообщение по ID? (в документации discord.py нашел что-то про content, но не понял как ввести контент определенного сообщения)
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как отправить сообщения в чат по ID чата — discord.py rewrite?
Здраствуйте, вот у меня есть код по которому в должно отправляться сообщения в канал который указан.
Nodemailer, node-imap как создать копию сообщения в отправленных
Я сделала отправку сообщений с почты mail.ru через nodemailer, но заметила, что отправленные.
Отправка сообщения в Discord
Есть у кого идеи как можно отправить сообщение в дискорд? Может кто-то уже нашёл решение. Мне.
Плагин на голосовые сообщения Discord
Я нашел плагин который позволяет отправлять голосовые сообщения. Сейчас он пересталработать и.
Регистрация: 15.04.2020
Сообщений: 2

Сообщение было отмечено TonyPY как решение
Решение
Привет!
Вот пример кода
1 2 3 4 5 6
async def trmsg(ctx, msgID: int, lng: str): # yes, you can do msg: discord.Message # but for the purposes of this, i'm using an int msg = await ctx.fetch_message(msgID) print(msg.content) textC = msg.content
Префикс trmsg айди сообщения
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Изменить цвет текста сообщения в Discord
Я делаю бота для дискорда, использую библиотеку Discord.js, мне нужно, чтобы бот при определённой.
Discord.py почему отправляет лишние сообщения?
Я пишу своего бота для дискорд использую библиотеку Discord.py. Я сделал команду /clear которая.
Оповещение в консоль при отправке сообщения ботом Discord
Как мне сделать, чтобы когда пользователю отправлялось сообщение в лс, в консоль писалось кому.
Как залить бутлоадер в китайскую копию arduino nano v3.0(CH340) через копию UNO
Пришли 2 контроллера, китацские копии arduino nano 3 и UNO. Обе на CH340. Драйвера встали.
Включить Discord.Intents для Discord бота
Доброго времени суток, уважаемые Форумчане. Возникла следующая трудность не могу никак понять как.
Работа с голосовыми каналами в Discord (Discord.Net v 2.0.1)
Интересует вопрос о вызове аудиопотока в Discord и выгрузке в этот аудиопоток музыки. Попытки.

Discord bot на Discord.Net
Вот не как не могу понять где ошибка ? using System; using System.Threading.Tasks; using.
Или воспользуйтесь поиском по форуму:
Как получить сообщение на которое ответили? discord.py
Как получить сообщение, в ответ на которое была отправлена команда, и ответить на него же. То-есть например:
User1 - text User2 - reply user1: !command Bot - reply user1: text2
Отслеживать
задан 28 дек 2022 в 14:54
130 2 2 серебряных знака 17 17 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Для этого создайте команду. Пусть будет .say
@client.command() async def say(ctx, text):
Добавляем проверку для сообщения. То есть если пользователь ответил на сообщение командой .say
if ctx.message.reference: original = await ctx.fetch_message(ctx.message.reference.message_id) await original.reply(f'Вам сообщение: ')
Таким образом бот ответит на сообщение на которое ответили Вы.
Общее
Общие вопросы, касающиеся использования библиотеки, относятся сюда.
Это содержание было взято непосредственно из документации и унаследованно от discord.py . Скорее всего, в будущем оно будет переписано.
Где я могу найти примеры использования?
Пример кода можно найти в папке примеры.
Как мне установить статус «Играет в»?
Именованный аргумент activity может быть передан в конструкторе commands.Bot или Bot.change_presence , учитывая ссылку Activity объект.
Конструктор может использоваться для статических активностей, в то время как Bot.change_presence может использоваться для обновления активности во время выполнения.
Настоятельно не рекомендуется использовать Bot.change_presence или вызовы API в on_ready , поскольку это событие может вызываться много раз во время выполнения, не только один раз. Существует высокая вероятность отключения, если присутствие будет изменено сразу после подключения.
Тип статуса можно задать с помощью ActivityType . В целях оптимизации памяти некоторые действия предлагаются в уменьшенных версиях:
Собрав обе эти части информации вместе, вы получите следующее:
bot = commands.Bot(..., activity=disnake.Game(name="игру")) # Или просмотр: activity = disnake.Activity( name="ютуб", type=disnake.ActivityType.watching, ) bot = commands.Bot(..., activity=activity)
Как мне отправить сообщение в определенный канал?
Вы должны получить канал напрямую, а затем вызвать соответствующий метод. Например:
channel = bot.get_channel(12324234183172) await channel.send("привет")
Как мне отправить сообщение в ЛС?
Вы должны получить объект User или Member и вызвать метод send() . Например:
user = bot.get_user(381870129706958858) await user.send("")
Если вы отвечаете на событие, например на on_message , у вас уже есть ссылка на объект User через Message.author :
await message.author.send("")
Как мне получить ID отправленного сообщения?
Метод abc.Messageable.send возвращает ссылку на Message , которое было отправлено. К ID сообщения можно получить доступ через Message.id :
message = await channel.send("хмм…") message_id = message.id
Как мне загрузить изображение?
Чтобы загрузить что-либо в Discord, вы должны использовать объект File .
Объект File принимает 2 параметра, файлоподобный объект (или путь к файлу) и имя файла для передачи в Discord при загрузке.
Если вы хотите загрузить изображение, это так же просто, как:
await channel.send(file=disnake.File("my_file.png"))
Если у вас есть файлоподобный объект, вы можете сделать следующее:
with open("my_file.png", "rb") as fp: await channel.send(file=disnake.File(fp, "new_filename.png"))
Чтобы загрузить несколько файлов, вы можете использовать именованный аргумент files вместо file :
my_files = [ disnake.File("result.zip"), disnake.File("teaser_graph.png"), ] await channel.send(files=my_files)
Если вы хотите загрузить что-то с URL-адреса, вам придется использовать HTTP-запрос с использованием aiohttp , а затем передайте io.BytesIO экземпляр в File вот так:
import io import aiohttp async with aiohttp.ClientSession() as session: async with session.get(my_url) as resp: if resp.status != 200: return await channel.send("Невозможно загрузить файл. ") data = io.BytesIO(await resp.read()) await channel.send(file=disnake.File(data, "cool_image.png"))
Как я могу добавить реакцию на сообщение?
Вы можете использовать метод Message.add_reaction .
Если вы хотите использовать эмодзи в юникоде, вы должны передать допустимую кодовую точку юникода в строке. В вашем коде вы можете написать это несколькими различными способами:
emoji = "\N" # или '\U0001f44d' или '' await message.add_reaction(emoji)
Если вы хотите использовать эмодзи, которые приходят из сообщения, вы уже получаете их кодовые точки в содержимом, не делая ничего особенного. Вы не можете отправить ‘:thumbsup:’ стиль сокращений.
Для пользовательских эмодзи вы должны передать экземпляр Emoji . Вы также можете передать строку , но если вы можете использовать указанный смайлик, вы должны быть в состоянии использовать Bot.get_emoji , чтобы получить смайлик через ID или использовать utils.find или utils.get на Bot.emojis или Guild.emojis .
Имя и ID пользовательского смайлика можно найти в клиенте, добавив слэш к :custom_emoji: . Например, отправка сообщения \:python3: приведет к .
# Если у вас уже есть ID emoji = bot.get_emoji(310177266011340803) await message.add_reaction(emoji) # Нет ID, выполните поиск emoji = disnake.utils.get(guild.emojis, name="LUL") if emoji: await message.add_reaction(emoji) # Если у вас есть имя и ID пользовательского смайлика: emoji = "" await message.add_reaction(emoji)
Как мне пропустить короутайн функции плеера «after»?
Музыкальный проигрыватель библиотеки запускается в отдельном потоке, следовательно, он не выполняется внутри короутайна. Это не означает, что невозможно вызвать короутайн в параметре after . Для этого вы должны передать вызываемый объект, который включает в себя несколько аспектов.
Первое, о чем вы должны знать, — это то, что вызов короутайна не является потокобезопасной операцией. Поскольку технически мы находимся в другом потоке, мы должны проявлять осторожность при вызове потокобезопасных операций, чтобы не допустить сбоев. К счастью для нас, asyncio поставляется с asyncio.run_coroutine_threadsafe функция, которая позволяет нам вызывать короутайн из другого потока.
Однако эта функция возвращает Future , и чтобы действительно вызвать его, мы должны получить его результат. Собрав все это вместе, мы можем сделать следующее:
def my_after(error): coro = some_channel.send("Песня закончена!") fut = asyncio.run_coroutine_threadsafe(coro, bot.loop) try: fut.result() except: # Произошла ошибка при отправке сообщения pass voice.play(disnake.FFmpegPCMAudio(url), after=my_after)
Как мне запустить что-то в фоновом режиме?
Как мне получить конкретную модель?
Есть несколько способов сделать это. Если у вас есть ID конкретной модели, вы можете использовать одну из следующих функций:
Следующее использует HTTP-запрос:
- abc.Messageable.fetch_message
- Bot.fetch_user
- Bot.fetch_guilds
- Bot.fetch_guild
- Bot.fetch_emojis
- Bot.fetch_emoji
- Bot.fetch_member
Если вышеприведенные функции вам не помогают, то использование utils.find или utils.get может быть полезно для поиска конкретных моделей.
# Найдите сервер по названию guild = disnake.utils.get(bot.guilds, name="My Server") # Обязательно проверьте, найден ли он if guild is not None: # Поиск канала по названию channel = disnake.utils.get(guild.text_channels, name="cool-channel")
Как мне сделать веб-запрос?
Чтобы сделать запрос, вы должны использовать неблокирующую библиотеку. Эта библиотека уже использует и требует стороннюю библиотеку для выполнения запросов, aiohttp .
async with aiohttp.ClientSession() as session: async with session.get("http://aws.random.cat/meow") as r: if r.status == 200: js = await r.json()
Смотрите полную документацию по aiohttp для большей информации.
Как мне использовать локальный файл изображения для изображения в эмбеде?
Настройка локального изображения для эмбеда может быть выполнена с помощью аргумента file в методе Embed.set_image . Он принимает File объект.
embed = disnake.Embed() embed.set_image(file=disnake.File("path/to/file.png")) await channel.send(embed=embed)
Существует ли событие для создания записей журнала аудита?
Поскольку Discord не отправляет эту информацию в шлюз, библиотека не может предоставить эту информацию. В настоящее время это ограничение Discord.