Как получить сообщение discord py
Перейти к содержимому

Как получить сообщение discord py

  • автор:

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

Author24 — интернет-сервис помощи студентам

Как получить сообщение от пользователя? Там при выводе 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?

Author24 — интернет-сервис помощи студентам

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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *