He buscado antes de decidir hacer esta publicación. He intentado algunos códigos de respuestas, pero no me han funcionado. Tenga en cuenta que soy nuevo con la codificación en general; Empecé a usar Python durante aproximadamente una semana. Logré codificar mi bot Discord para generar imágenes aleatorias a partir de un comando, sin embargo, no creo que lo hice correctamente. Las imágenes se envían al azar, pero sus enlaces se muestran en los mensajes del bot. Aquí está el código que tengo para ello:

client = Bot(command_prefix=BOT_PREFIX)

@client.event
async def on_message(message):
    if message.content.upper().startswith("?DOG"):
        jessie1 = "https://cdn.discordapp.com/attachments/432563417887277060/484484259386621993/22B25E7A-3157-4C23-B889-47ECFE8A15A9.jpg"
        snowy = "https://cdn.discordapp.com/attachments/487045791697862666/487390822485065749/824B6151-E818-49A4-A564-C2C752ED6384.jpg"
        await client.send_message(message.channel, random.choice([snowy, jessie1]))

Estoy usando dos imágenes como ejemplos por ahora, ya que hay muchas más que no quiero incluir todas a la vez.

Puedo generar estas dos imágenes al azar usando un comando, pero no sé cómo codificar para que sus enlaces no aparezcan en el mensaje del bot cuando envía las imágenes.

Quiero saber si hay una manera de hacerlo sin hacer un gran cambio en el código que tengo en este momento. Sin embargo, si hay una manera eficiente / correcta de hacerlo, con mucho gusto tomaré su consejo para una mejor experiencia.

Si todo va bien, también me gustaría agregar un mensaje para que el bot diga cuándo envía esas imágenes. Tengo una idea sobre cómo hacerlo, pero primero necesito resolver mi primer problema xD

0
Jango 10 sep. 2018 a las 01:29

3 respuestas

La mejor respuesta

Según la documentación no puede cargar una imagen como lo haría desde una fuente local, por lo que puede

Cargar desde una fuente local usando send_file

await client.send_file(message.channel, 'my_image.png')

O

Insertar la URL

import discord

embed = discord.Embed()  
embed.set_image(url = random.choice([jessie1,snowy]))  
await client.send_message(message.channel,embed=embed)
0
Tristo 9 sep. 2018 a las 23:23

Todo lo que sé sobre "discordia" es lo que he leído en los últimos 30 años, pero aquí hay algunas cosas que me vienen a la mente:

¿De dónde viene el objeto "cliente"? Si algo como mostrar el enlace frente a no mostrar es incluso controlable por su parte, apuesto a que es una opción que puede configurar en el cliente. ¿Hay un client.someattr? como client.show_link=False? O, ¿hay algo que puedas pasarle al constructor?

client = Client(foo, bar, show_links=False)

O ... ¿Tal vez, en lugar de enviar texto (que es lo que estás haciendo), quieres construir y enviar algún tipo de objeto de "imagen" ...?

img1 = Image(url='...')
img2 = Image(local_file='...')
client.send_message(message.channel, random.choice([img2, img1]))

Tenga en cuenta que estas son 100% conjeturas, sin leer los documentos. Todo esto se basa en la familiaridad con muchas bibliotecas diferentes, API.

Supongo lo mismo para el problema de notificarte. Necesitaría ver más documentos. También es posible que esto no sea algo sobre lo que tenga control, el otro extremo verá esto, le guste o no.

0
Mike Burr 9 sep. 2018 a las 22:44

Dentro de su comando, debe crear una lista de objetos Image y random.choice.

Como se indicó anteriormente, debe leer los documentos antes de preguntar aquí. Además, Stack Overflow no es la forma de obtener respuestas rápidas, ese es el servidor de soporte discord.py en https: // discord .gg / r3sSKJJ. Como nota final, pronto se lanzará una nueva versión de la biblioteca que introduce una serie de cambios importantes, que se pueden leer sobre aquí.

0
Unknown Name 19 mar. 2019 a las 19:28