- Si está buscando un tl; dr, puede [consultar las preguntas frecuentes] (# preguntas frecuentes). *
Saludos. Si no me conoces, soy Danny. Soy el principal (y único) mantenedor de la biblioteca discord.py. Contrariamente a la creencia popular, en realidad no soy un empleado de Discord. De hecho, ni siquiera soy un programador profesional. En realidad, soy un profesional médico que trabaja en mi hospital local. A pesar de todo eso, disfruto de la programación como pasatiempo y he trabajado en discord.py en mi propio tiempo libre.
He estado trabajando en discord.py durante aproximadamente 6 años; una parte bastante importante de mi vida se ha dedicado al mantenimiento de esta biblioteca de software de forma completamente gratuita. Nunca he aceptado donaciones. Nunca he pedido donaciones. Esta biblioteca ha sido mi proyecto de pasión, nacido completamente del deseo de ver más bots en Discord escritos en Python. A lo largo de los años, muchos usuarios de mi biblioteca me han dicho que discord.py cambió sus vidas. Les permitió desafiarse a sí mismos, crear cosas divertidas y encontrar nuevas oportunidades. Como alguien que siempre ha valorado los proyectos educativos de código abierto, significa mucho para mí saber que discord.py ha tenido un impacto positivo en la vida de las personas.
Desafortunadamente, hoy marca el final de mi participación en el proyecto. Por lo tanto, con efecto inmediato, dejaré el cargo de mantenedor del proyecto. Les pregunté a los colaboradores en los que confío si querían hacerse cargo del proyecto, pero nadie aceptó. Esencialmente, esta es una decisión unánime de que el proyecto discord.py terminará. El código permanece abierto, por lo que si alguien quiere bifurcarlo y trabajar con él, es libre de hacerlo. Sin embargo, el desarrollo de la línea principal cesará a partir de hoy.
Quiero asegurarles que esta no fue una decisión tomada a la ligera. Mi esperanza es que este documento explique mis pensamientos y el proceso que condujo a la decisión. También he escrito una [FAQ] (# FAQ) si solo quieres un resumen rápido.
Me uní a Discord el 10 de agosto de 2015. Tenía amigos que me recomendaron Discord y queríamos trasladar nuestras operaciones de torneo de IRC / Skype a una nueva plataforma debido a quejas excesivas con esas plataformas. La primera vez que usé Discord me impresionó bastante; sin embargo, para pasar a eso, necesitábamos una API para que funcionaran mis bots. Desafortunadamente, en ese momento, no había una API "oficial". Afortunadamente, encontré un contenedor de API con el nombre de node-discord y lo usé. Esta envoltura de API era muy mínima, solo contenía un evento de depuración que volcaba los mensajes de la puerta de enlace (en ese momento, v2) y un evento de mensaje que era especial solo para los mensajes. Esta experiencia me interesó mucho en descubrir cómo funcionaba la API. Hice mi bot, [R. Danny] r-danny-blog, al día siguiente (11 de agosto) y lo invitó al servidor r / Splatoon.
No estaba completamente satisfecho con el paquete node-discord ni con el uso de EcmaScript 5, así que me encargué de comenzar a realizar ingeniería inversa en la API usando Python. En este momento, todos los primeros miembros del ecosistema de bots y API residían en un servidor llamado Discord Developers, un servidor diferente, sin embargo, al que lleva el mismo nombre hoy. En este servidor, teníamos muchos entusiastas de Discord y empleados de Discord, al igual que el servidor Discord Developers más nuevo de hoy. De estas personas, había personas como izy521 (el creador del 'nodo-discordia' antes mencionado) y Voltana. Estuvimos hablando sobre la API de Discord y aplicando ingeniería inversa hasta que finalmente todos nosotros, personas con ideas afines, creamos nuestro propio servidor llamado API de Discord, propiedad de Voltana. Esto sucedió el 13 de agosto, muy poco después de mi propio registro.
Seguí trabajando en mi envoltorio de API, acertadamente llamado discord.py, junto con los otros que habían creado sus propias bibliotecas, como Discord.NET, discord.rb, discord.js, discord4J, etc. Juntos, realizamos ingeniería inversa de la API durante los próximos meses sin documentación que nos ayude. Nuestro pequeño ecosistema prosperó y se crearon muchos bots. Eventualmente, Discord mismos escribieron una [publicación de blog] discord-blog-dapi detallando nuestras aventuras para lograr que más personas usen nuestras bibliotecas. Había mucha esperanza y entusiasmo sobre el futuro de los bots de Discord. ¡Nos prometieron muchas cosas! El futuro iba a ser brillante; íbamos a obtener comandos de barra, webhooks, "observadores de canal", soporte de voz adecuado, etc.
Con el paso del tiempo, Discord se dio cuenta de que el enfoque tradicional de invitar a los bots mediante el rastreo de invitaciones era problemático. Para combatir este vector de abuso, Discord decidió aumentar su interés en la API e hizo cuentas oficiales de Bot que solo podían ser invitadas a través de OAuth2 y no a través del mecanismo tradicional de extracción de invitaciones. Esto se consideró un buen cambio para la privacidad y comenzó el esperanzador comienzo de Discord invirtiendo en su API. Nos prometieron muchas funciones exclusivas para bots, aunque nuestra primera y única función en el lanzamiento fue la capacidad de unirnos a canales de voz en muchos servidores. La API oficial del bot se lanzó el 8 de abril de 2016.
Cuando Discord presentó su API oficial en 2016, se hicieron muchas promesas sobre las características que se implementarían. Desafortunadamente, la mayoría de las cosas que nos prometieron nunca terminaron de materializarse. Cuando les preguntamos a los empleados de Discord sobre el estado de la API, siempre mencionaron que carecían de los recursos de desarrollo necesarios para trabajar en la API y que no tenía sentido comercial priorizar o trabajar en la plataforma API. Esto era completamente comprensible ya que Discord era, en ese momento, una pequeña empresa con mucho en su plato. Sin embargo, esta falta de prioridad significó que la API languideciera durante los próximos 3 años. Había una creciente frustración dentro de la comunidad de bots de Discord porque no nos escuchaban.
Nuestro servidor de API de Discord era originalmente un lugar donde los empleados de Discord y los desarrolladores de bibliotecas podían discutir los cambios entre ellos. Nuestro servidor no estuvo exento de drama, ni fue perfecto. Algunos empleados de Discord se fueron debido a este drama, y algunos nunca hablaron mucho para empezar. A pesar de todo esto, nuestro servidor API de Discord fue el centro de comunicaciones central entre los empleados de Discord y los desarrolladores de bibliotecas. Era el lugar principal donde los desarrolladores de bibliotecas podían obtener información sobre los próximos cambios y proporcionar comentarios. Con el tiempo, la cantidad de empleados de Discord dispuestos a colaborar con nosotros, los desarrolladores de bibliotecas se redujo a dos: Jake y b1nzy. A menudo bromeábamos diciendo que los dos eran nuestra última esperanza, ya que eran los únicos empleados de Discord que mostraban un interés genuino en escuchar y actuar sobre nuestros comentarios. Desafortunadamente, b1nzy dejó Discord y Jake se volvió cada vez más ocupado con otras áreas de la aplicación, por lo que nuestra desconexión con el equipo interno de Discord solo siguió creciendo.
No fue hasta alrededor de noviembre de 2019 que Discord comenzó a enfocar más recursos en su plataforma de desarrollo de bots.
Mientras nuestra comunicación sufría, un servidor diferente y más privado estaba recibiendo más atención. Este servidor se conocía coloquialmente como "dinfra", abreviatura de "Discord Infrastructure". Originalmente, el propósito de este servidor era compartir el estado de la infraestructura con los desarrolladores de bots más grandes para avisarles cuando las cosas pudieran ser turbulentas. Sin embargo, el objetivo de este servidor se transformó en una forma semioficial para que los grandes desarrolladores de bots y los empleados de Discord se comuniquen sobre el futuro de la plataforma.
Cabe señalar que este servidor no tenía muchos desarrolladores de bibliotecas dentro, por lo que en su mayoría estábamos ciegos a lo que sucedía en ese servidor. Solo se invitó a dos desarrolladores de bibliotecas y solo porque * también * ayudaron con el desarrollo de grandes bots. No estaban allí para su papel como desarrolladores de bibliotecas. Los empleados de Discord comenzaron gradualmente a discutir los cambios de API en el servidor de Discord Infrastructure en lugar de en nuestro servidor de API de Discord. Discord ya no nos mantuvo actualizados a los desarrolladores de bibliotecas sobre los cambios propuestos en la API, ni nos dio una gran oportunidad para proporcionar comentarios. Afortunadamente para nosotros, los desarrolladores de bibliotecas, teníamos algunos "moles" en el servidor de Discord Infrastructure que estaban dispuestos a intercambiar información con nosotros para que pudiéramos obtener información sobre los próximos cambios que tendríamos que acomodar.
Uno de esos cambios fue la introducción de una función llamada Suscripciones_guild, que era una forma de reducir el ancho de banda de un bot grande al optar por no participar en los eventos PRESENCE_UPDATE y TYPING_START. Estos eventos generalmente representaban alrededor del 95% del ancho de banda de un bot y el uso de la CPU, y era una solicitud de función común eliminar estos eventos para que no aparecieran en el flujo de eventos de la puerta de enlace. Desafortunadamente, este cambio booleano vino con la advertencia de desactivar también los eventos relacionados con miembros, y no era deseable para muchos bots. Era necesario crear un sistema mejor. Este sistema se conoció como intenciones.
Alrededor de diciembre de 2019, hubo discusiones sobre una nueva función llamada intenciones en el servidor de Discord Infrastructure. El objetivo de este sistema era tener un enfoque más granular en la desactivación de eventos que muchos desarrolladores de bots esperaban. Este cambio, presumiblemente, sería retrocompatible con la forma en que se hacían las cosas en ese momento. Desafortunadamente, al mismo tiempo, surgieron preocupaciones crecientes con un anillo de usuarios-bot que creó un sitio web y un raspador conocido como "dis.cool", que recopilaba información del usuario.
Discord presumiblemente vio este creciente anillo de usuarios-bot como una amenaza de responsabilidad e introdujo el concepto de "Intenciones privilegiadas" y discutió el plan con el servidor de Discord Infrastructure, nuevamente sin consultar a los desarrolladores de bibliotecas al respecto. Mi topo en el servidor de Discord Infrastructure me dio un [gist] privileged-intents-lite del plan original para intentos privilegiados. Quedó claro que esta no era la característica que habíamos estado solicitando durante años, sino que se trataba de restricciones añadidas que se crearon debido a una falsa equivalencia entre bots de usuario y bots reales.
En este punto, les había preguntado a los empleados de Discord qué eran las intenciones, y ellos respondieron preguntándome dónde había oído hablar de tal característica, lo que implica su secreto. Con la esperanza de no revelar mi ahora principal fuente de información, no entregué demasiada información sobre la fuente. Sin embargo, finalmente los empleados de Discord divulgaron y nos dieron un resumen rápido de los conceptos básicos. Al día siguiente, nos dieron la misma idea y nos hablaron de ello.
La especificación original de intents solo tenía "PRESENCE_UPDATE" como intent privilegiada. Para los "bots grandes" de más de 100 servidores, esto bloquearía su capacidad para unirse a más servidores a menos que solicite explícitamente la aprobación de Discord o desactive la intención. En ese momento, el proceso de inclusión en la lista blanca equivaldría a una casilla de verificación y un cuadro de texto que completaría para darle a Discord una justificación de por qué lo necesitaba, adjuntando opcionalmente un video que muestre el uso de la función por parte de su bot.
La mayoría de los desarrolladores y contribuyentes de bibliotecas no estaban contentos con los cambios, ya que la forma en que históricamente se manejó la burocracia en Discord significaría que el bot se rompería silenciosamente mientras esperaba una respuesta de Discord. En ese momento, el gran sistema de fragmentación de bots que los bots en más de 250,000 servidores tenían que solicitar ya estaba atrasado, por lo que había crecientes preocupaciones sobre el efecto que la burocracia tendría en nuestros bots. Nos prometieron que el sistema estaría bien y que la burocracia no tendría un efecto negativo.
Hubo importantes discusiones de ambos lados sobre si el sistema de intención privilegiada logró algo. La mayoría de los desarrolladores de bibliotecas sintieron que los cambios estaban mal dirigidos y se dirigieron al tipo incorrecto de bot. El modelo de amenazas se basaba en que los robots de usuario eran malos actores, y no bots regulares, mientras que los cambios apuntaban a los bots regulares. También sentimos que era fácil eludir las restricciones con solo tener un anillo de bots, similar a lo que se hace hoy con los bots de usuario.
Discord mencionó repetidamente que el umbral de 100 servidores tendría un impacto mínimo y que la mayoría de los bots no superaron ese límite. Para nosotros, los bots grandes son bots con más de 100 servidores y en el territorio de más de 100k. En ese momento, el evento PRESENCE_UPDATE estaba muy sobrecargado, proporcionando no solo presencias y estados, sino también actualizaciones a nivel de usuario (como nombre, avatar y discriminador). Nos dijeron que antes de que el cambio entrara en funcionamiento, lo dividirían, y eso se hizo en la versión 8 de la API, 10 meses después.
Después de mucha discusión con los empleados de Discord diciéndonos que estaban escuchando nuestros comentarios, decidieron que la intención de GUILD_MEMBERS también sería privilegiada. La intención GUILD_MEMBERS es la intención que controla si obtienes información de miembros a través de la puerta de enlace y es el corazón y el alma de cómo se envían los eventos de nivel de miembro a través de bibliotecas. Esta intención también es necesaria para cualquier almacenamiento en caché local de miembros. En ese momento, no había suficientes eventos que proporcionaran los datos de los miembros, por lo que esto significaba que la usabilidad de todas las bibliotecas en general se vería afectada. Los empleados de Discord mantuvieron la opinión de que este cambio sería un beneficio neto y que los aspectos burocráticos del mismo serían solo dos cuadros de texto y casillas de verificación que cualquiera podría completar.
Hubo mucho alboroto por esta adición, no solo dentro del servidor de la API de Discord, sino también en [GitHub] member-intent-github. Hasta el día de hoy, esa solicitud de extracción de GitHub tiene la mayor discusión de todos los problemas y solicitudes de extracción para el repositorio. Esto se debió a que, en ese momento, los datos de los miembros eran necesarios para una gran cantidad de funciones dentro de la API, como la verificación de permisos y la moderación. Asimismo, los empleados de Discord afirmaron que el retroceso a la burocracia sería mínimo y que todos los bots serían verificados en un día. También afirmaron que en el futuro, los datos de los miembros deberían volverse innecesarios. La fecha límite para cumplir con estos cambios fue el 27 de octubre de 2020. La fecha de introducción de esta intención fue el 3 de febrero de 2020.
Nos aseguraron que estaban escuchando nuestros comentarios.
Después de la gran cantidad de discusión que involucró intenciones privilegiadas, que tuvo lugar en el transcurso de alrededor de 3 meses, la mayoría de los desarrolladores de bibliotecas, contribuyentes y empleados de Discord fueron drenados de la conversación. Como resultado, después de esto, la comunicación con nosotros se volvió esencialmente silenciosa por radio. No habíamos hablado con ningún empleado de Discord sobre nada, excepto un adelanto de la funcionalidad allowed_mentions a principios de febrero, un poco después del retroceso inicial.
No descubrimos qué planeaba hacer Discord hasta que revelaron su plan para el futuro en una [publicación de blog] discord-future-blog-post el 7 de abril de 2020. En esta publicación de blog, el equipo de bot y API dio a conocer su visión de futuro para la plataforma al mostrar ejemplos de Figma sobre cómo esperaban tener bots integrados dentro del ecosistema. Se mostraron muchos conceptos, como menús contextuales, botones y mensajes efímeros. Muchos de nosotros finalmente estábamos emocionados por los cambios que vendrían.
Desafortunadamente, junto con las noticias sobre el futuro de la plataforma, surgió una advertencia sobre restricciones adicionales a la plataforma. Ya no tendríamos que completar solo un formulario normal de dos textos y casillas de verificación, sino que tendría que completarse un cuestionario completo. Además de esto, sería necesario proporcionar una identificación emitida por el gobierno para verificar que su bot reciba una marca de verificación de verificación, junto con una insignia de perfil (que luego se suspendió). Ya no fue posible ser incluido en la lista blanca para la intención privilegiada sin pasar por el sistema de verificación invasivo de privacidad. Ya no era posible que su bot se uniera a más de 100 servidores sin pasar por este sistema de verificación.
Discord afirmó que ayudaría con la seguridad y la privacidad al evitar que los bots maliciosos crezcan y obtengan datos confidenciales. Los desarrolladores de la biblioteca respondieron que no ayudaría, ya que había que invitar a bots maliciosos y el quid de los bots maliciosos eran, y siguen siendo, bots de usuario. Sin mencionar que en la propuesta anterior, rechazar los llamados intentos privilegiados maliciosos aún permitiría que su bot crezca más allá de los 100 servidores. La propuesta final revelada por la publicación del blog lo había hecho, por lo que unirse a cualquier servidor después de los 100 requeriría una verificación con una identificación emitida por el gobierno, independientemente de si tenía las intenciones privilegiadas deshabilitadas o no.
Dado que hubo mucho rechazo sobre este tema, hice un formulario para obtener opiniones del ecosistema de desarrolladores en ese momento y recibí alrededor de 1600 respuestas. Había planeado compartirlo con Discord con la esperanza de tal vez cambiar de opinión sobre el concepto o darles una idea de cómo se sentían los desarrolladores, pero me dijeron que el tamaño de mi muestra era demasiado pequeño para ser considerado. Cualquiera con un conocimiento pasajero de estadística sabría que un tamaño de muestra de 1600 no es insignificante. Sin embargo, a la mayoría de las personas que hicieron la encuesta no les gustó la idea de compartir su identificación emitida por el gobierno para verificar su bot:
! [Encuesta para desarrolladores de bots 1] (https://user-images.githubusercontent.com/1695103/128839688-a764722c-a449-45d2-8273-1b94ce0d6cae.png)
Hubo muchos datos sobre cómo se sintieron los desarrolladores de bots sobre el cambio que finalmente no pude presentar a los empleados de Discord debido a que no lo querían. Aproximadamente en este momento, la mayor parte de mi motivación estaba menguando. Estaba en contra del sistema de verificación en su esencia, ya que lo consideraba invasivo e innecesario. Cuando le hizo una pregunta inocente a Mason, el Gerente de Proyecto del equipo de Bot & API, sobre si mi bot podía conectarse a la puerta de enlace sin ser verificado, respondió de manera grosera y me llamó "mártir" con un tono innecesariamente amenazante:
! [Mason llamándome mártir] (https://user-images.githubusercontent.com/1695103/128839762-7f7e6b9c-ef66-496b-ad69-5bd544ac78f0.png)
Siguiendo la intención de verificar los bots en el ecosistema, el personal de soporte se vio abrumado de inmediato con las solicitudes, lo que provocó que su promesa de SLA de 5 días anterior se desmoronara por completo. Todo el equipo de bots y API tuvo que trabajar en conjunto para garantizar que pudieran satisfacer la demanda de las personas que verificaban sus bots. Sin embargo, a pesar de sus mejores esfuerzos, se retrasaron constantemente durante varias semanas, incluso meses, durante todo el año 2020, y esto aún continúa hasta el día de hoy en 2021.
Discord había usado originalmente la insignia de "Desarrollador de bots verificado" como un incentivo para lograr que las personas fueran "reconocidas" por sus esfuerzos dentro del ecosistema. Según ellos, esto llevó a una afluencia de personas que solicitaban la verificación con el único propósito de obtener la insignia. Eventualmente, revocaron la insignia por completo y cambiaron el nombre de la insignia a "Desarrollador de bots verificado temprano". Al no quitarse la insignia, esto tuvo la consecuencia de alimentar el mercado negro de la cuenta. La indignación resultante de los desarrolladores de bots que no obtuvieron una insignia después del corte arbitrario fue lo suficientemente grande como para que los empleados de Discord reescribieran la historia y repartieran mudos a las personas que solo estaban pidiendo la insignia. Llamaron a este comportamiento "colocación de placas".
! [Publicación de credenciales] (https://user-images.githubusercontent.com/1695103/128840429-bd7822b9-599a-4d98-a4c1-37faff1067c7.png)
! [Reescritura de la historia] (https://user-images.githubusercontent.com/1695103/128839827-94b504b0-b7cb-4104-82b6-506fe6b060a6.png)
Discord siempre hizo promesas a lo largo de 2020 de que iban a cumplir con su legendario SLA de 5 días. A pesar de que Discord culpó a las insignias por congestionar la cola de verificación, el problema no se resolvió. Personalmente, no veo un futuro en el que suceda este SLA constante de 5 días. A pesar de contratar más personal de apoyo para manejar la cola, todavía está un mes atrasado y solo va a empeorar, ya que más personas deberán volver a solicitar su solicitud de intenciones en los meses siguientes antes de la fecha límite.
Alrededor de julio y agosto de 2020, los empleados de Discord comenzaron a hablar con las personas en el servidor de Discord Infrastructure sobre la posibilidad de que Slash Commands finalmente llegara a Discord. Esta característica era una que había estado en las conversaciones desde el comienzo de la historia de Discord, por lo que algunas personas estaban entusiasmadas de que finalmente vendría. Desafortunadamente, aproximadamente al mismo tiempo, los empleados de Discord estaban insinuando que el contenido del mensaje se eliminaría o restringiría.
! [Fuga de infraestructura de Discord] (https://user-images.githubusercontent.com/1695103/128839881-a17407aa-cc4d-4d7c-a4f7-6028357f5e9b.png)
Después de que mi topo compartiera estas imágenes conmigo, decidí compartirlas con los desarrolladores de bibliotecas restantes en nuestro servidor privado. Empezamos a ver la introducción de Slash Commands como una forma de destruir nuestro antiguo trabajo. En este punto, los comandos de barra oblicua no se lanzaron realmente. Se encontraban principalmente en la fase de desarrollo. Sin embargo, pensamos que cuando los comandos Slash se presentaran al público, eliminarían el contenido del mensaje junto con ellos.
Poco después, las personas en el servidor de Discord Infrastructure obtuvieron una versión beta de acceso temprano para la implementación de Slash Commands. Mi topo también me dio la esencia (no disponible públicamente) que explica cómo iba a funcionar el sistema. Los empleados de Discord no compartieron esta esencia o información con nosotros hasta más tarde. Cuando finalmente compartieron la esencia con nosotros, planearon tener una reunión con nosotros sobre cómo querían que funcionara el sistema. No participé debido a que se llevó a cabo mientras estaba en el trabajo. Los desarrolladores de la biblioteca que participaron dijeron que compartieron muchos comentarios sobre cómo querían que funcionaran los comandos Slash. La mayor parte de esta retroalimentación terminó siendo descartada.
Cuando la versión beta de Slash Commands llegó a la fase pública, gran parte del público en general terminó repitiendo las mismas críticas y comentarios que los desarrolladores de bibliotecas y los grandes desarrolladores de bots habían compartido con el equipo de Bot & API. Después de cierta presión de la comunidad, finalmente implementaron algunos cambios, aunque los permisos siguieron siendo un gran problema. Básicamente, los comandos de barra tenían un defecto fatal: no estaban vinculados a un usuario. Esto significaba que los permisos tradicionales no funcionaban con los comandos de barra. Para los bots tradicionales, el administrador de un servidor podría bloquear bots específicos por canal bloqueando el permiso Leer mensajes. Para un bot de Slash Command, esto ya no sería posible ya que Slash Commands ** omitió ** todas las formas de permisos.
Nos dijeron que el sistema de permisos mejoraría con el tiempo, aunque esto nunca terminó por materializarse. La capacidad de un Comando de barra (también conocida como Interacción) para eludir el permiso @ Everyone no se solucionó hasta mayo de 2021, 6 meses después de que ya se había informado.
A principios de junio de 2021, se contactó a los 8 desarrolladores de bibliotecas más populares en relación con una reunión especial sobre un tema que era importante para todos nosotros en el ecosistema. Sabiendo lo que sabíamos sobre la intención del mensaje, pensamos que esta sería la última oportunidad que tendríamos para defender el ecosistema de la rotura y, con suerte, lograr que cambiaran de opinión sobre todo el asunto. La reunión estaba sujeta a un acuerdo de confidencialidad, lo que nos hizo reacios a firmarlo, pero como creímos y nos dijeron que esta sería nuestra última oportunidad de conseguir un asiento en la mesa para este cambio, todos estuvimos de acuerdo con el único propósito de convencer. los desarrolladores que esta dirección era una mala idea.
Desafortunadamente, debido a que estoy legalmente obligado por este NDA, no puedo compartir demasiados detalles. Sin embargo, mencionaré que la moral de todos los desarrolladores de bibliotecas cayó bastante rápido.
Todos los desarrolladores de bibliotecas estábamos en contra del cambio para que el contenido del mensaje se convirtiera en una intención privilegiada. Cae bajo los mismos problemas burocráticos que sufren los intentos privilegiados regulares, excepto con consecuencias más devastadoras. Muchos bots actuales en el ecosistema se enfrentan a la opción de reescribirse para cumplir con los cambios que creo que son innecesarios o morir. Discord parece creer que este cambio es para mejor, pero no se exploró ni se planteó ningún camino alternativo. En cambio, optaron por desplegar la opción nuclear y esperan solucionar el problema de esa manera. Discord también cree que la mayoría de los bots migrarán completamente dentro de la línea de tiempo dada. No creo que sea así.
Discord tiene muchas cosas planeadas para facilitar la transición a los usuarios en el futuro. No estoy seguro de si realmente terminarán todas estas mejoras planificadas entre ahora y la fecha límite. Históricamente, solo han logrado finalizar estos cambios un mes antes de que comience la fecha límite. En lugar de mejorar el sistema antes de forzarlo a los usuarios, han decidido anunciar los cambios primero y luego prometer de buena fe que implementarán los cambios necesarios. características para facilitar la transición. Esto no les da a los desarrolladores de bots tiempo para acomodar su bot a los cambios, en caso de que una característica de la que dependan para la migración aún no exista.
Discord ya ha comenzado a apresurar funciones de una manera descuidada y apresurada. Una de las características más nuevas, los menús contextuales, ha recibido muchos comentarios de muchos desarrolladores de bibliotecas y desarrolladores de bots que solicitan que el tipo se revise y se divida para evitar la rotura de la biblioteca y hacer que la API sea más intuitiva de entender. A pesar de que la mayoría de los usuarios brindan comentarios estrechos en la versión beta privada de la función, se ha ignorado explícitamente y los empleados de Discord afirman que [solo querían sacar algo rápidamente] [cambio de menú contextual].
! [Respuesta de Minn a la noche] (https://user-images.githubusercontent.com/1695103/128839928-88a95d20-16c7-48e5-9000-2a871a2934c5.png)
No creo en esperar promesas para que algo sea mejor, cuando históricamente estas promesas han estado vacías. No creo que la situación mejore radicalmente para abril de 2022 y no creo que este cambio valga el impacto duradero que tendrá en el ecosistema. Desafortunadamente, esta decisión es definitiva y lo único que puedo hacer en esta etapa es mirar desde lejos. No tengo la motivación para mantenerme al día con un ecosistema en el que ya no creo. Quería que un ecosistema bot rico prosperara y floreciera, para que los bots alcanzaran su máximo potencial, pero Discord ha decidido repetidamente que las limitaciones son una mejor ruta. Es por eso que he decidido dejar de ser responsable de este proyecto. Mi participación en discord.py y la API siempre fue impulsada por la pasión y la esperanza. Estos cambios recientes me han drenado por completo de ambas cosas.
Me imagino que habrá muchas preguntas de personas que quieran conocer los detalles.
Mi motivación para trabajar en Discord ha disminuido durante el año pasado, desde que se introdujo el sistema de verificación. La sordera persistente del tono, los plazos, las mentiras, el engaño y los cambios rápidos sin la consulta adecuada por parte de los empleados de Discord hacen que sea difícil tener la motivación necesaria para trabajar con los cambios frecuentes y las limitaciones que se me imponen.
Para mí, la intención privilegiada del contenido del mensaje señala el fin de la libertad creativa y de las bases de piratería en las que todos creían los desarrolladores de bibliotecas. El control ahora está invertido y las cosas se están construyendo alrededor de las limitaciones de Discord. Los bots ya no prosperarán con una caja de arena limitada solo por su imaginación, sino que Discord es ahora el único guardián de los casos de uso aprobados. El futuro de los bots de Discord se basa únicamente en el sistema de interacción; Los empleados de Discord deben escribir y respaldar las cosas de manera explícita, dejando de lado las soluciones creativas. No me sorprendería si en el futuro, toda la API de la puerta de enlace se restrinja y desaproveche, y la única forma recomendada que queda para crear un bot es por interacción o basada en HTTP. No tengo ninguna esperanza real para el futuro de los bots de Discord.
Sin embargo, no quiero dar la impresión de que las cosas que Discord está construyendo no sean geniales. De hecho, son muy geniales. Cosas como botones y extensiones de interfaz de usuario son características que hemos estado esperando desde 2016, y es genial verlas en la plataforma. Es solo que se combina con una pastilla difícil de tragar que daña el ecosistema en su conjunto. Un precio que no estoy dispuesto a pagar exactamente.
El desarrollo cesará y el repositorio se pondrá en modo de solo lectura.
Desafortunadamente, no hay mucho que pueda hacer para detener este tren más que decirle a Discord su opinión sobre los cambios. La idea de la ruptura del ecosistema me ha causado mucho estrés y angustia mental. Pasé la mejor mitad de los últimos 2 meses tratando de transmitir la angustia que siento a varios empleados de Discord en vano. Discord parece creer que todo estará bien dentro de 9 meses, pero no me suscribo a este proceso de pensamiento.
Este cambio es radical, incluso si me eliminaron de la ecuación. Discord espera que todos los bots migren a Slash Commands para abril de 2022, ya sea que haga algo para ayudar o no. Mi API propuesta que tenía para Slash Commands es incompatible con el código actual para la extensión de comandos debido a que los dos sistemas son fundamentalmente diferentes en paradigma. Esto significa que no importa qué camino hubiera elegido tomar, la gran mayoría de los usuarios de la biblioteca habrían necesitado reescribir su código de todos modos.
Cabe señalar que Discord quiere que todos los bots de más de 75 gremios migren a Slash Commands en el futuro previsible. Si desea solicitar la intención de contenido del mensaje, ** no puede ** usarlo para fines de manejo de comandos; ellos le negarán explícitamente la intención. Por lo tanto, de manera efectiva, todos deben pasar a Slash Commands para que su bot funcione.
! [Declaración del empleado de Discord sobre la intención del contenido del mensaje] (https://user-images.githubusercontent.com/1695103/129664615-3ec46e4e-38e7-4a89-ba1c-ff7c3d70ce9e.png)
! [Declaración de Kady sobre la intención del contenido del mensaje] (https://user-images.githubusercontent.com/1695103/131197302-08f128cb-af2b-4a4b-b5e6-20e84658b324.png)
Durante la sesión de preguntas y respuestas del desarrollador el 4 de agosto, Mason, el gerente de proyectos del equipo de Bot & API, lo alentó a reescribir su bot, ya que es "fácil" y "tonto".
! [Pregunta de las preguntas y respuestas] (https://user-images.githubusercontent.com/1695103/128839984-9e6adbe6-31f5-4270-afc4-dcbdc0843ac8.png)
Uh, bibliotecas populares. Entonces, obviamente no tenemos control sobre las bibliotecas de terceros. Son terceros. Um, tratamos de trabajar con ellos muy de cerca para mantenerlos informados de los cambios, eh y para responder sus preguntas sobre implementación y API y consistencias y "Oye, esta API apesta o no". Uh, Slash Commands ha estado en una beta abierta para desarrolladores desde diciembre del año pasado. Los cambios no se producirán hasta dentro de 9 meses más. Lo que hará que sea 1 año y 4 meses de barra 16 meses si sé cómo hacer matemáticas correctamente desde que se lanzaron los comandos de barra por primera vez. Muchas bibliotecas tienen soporte. Algunos tienen bifurcaciones no oficiales. I will also say that for those intrepid developers they are pretty well usable without libraries but I know that that is a much sort of bigger task to undertake. Um but if you haven't checked out using Slash Commands over HTTP and outgoing webhooks, it's pretty dope and really easily scalable.
Therefore, if you want your bot to continue working you have a few options:
- Implement the slash command system yourself. The library (v2) provides
on_interactionto help you do this, and all the endpoints are technically inbot.http. - Implement the slash command system using the raw API.
- Wait for a competing discord.py fork to arrive.
- Rewrite your bot using a new library or in a different programming language.
Discord has repeatedly stated that they believe things will be fine by April 2022:
However, the reality of the situation is that a significant number of libraries do not implement Slash Commands. The following is a table of support:
| Library | Implementation State | Notes |
|---|---|---|
| discord.py | Not Implemented | |
| Discord.NET | Not Implemented | |
| disgord | Not Implemented | |
| discordjl | Not Implemented | |
| Dimscord | Not Implemented | |
| DSharpPlus | Not Implemented | |
| DiscordPHP | Not Implemented | Implementation no longer works |
| Sleepy Discord C++ | Partially Implemented | Unstable/Unreleased |
| Discordia | Partially Implemented | Unstable/Unreleased |
| Eris | Partially Implemented | Unstable/Unreleased |
| discord.rb | Partially Implemented | Unstable/Unreleased |
| discordgo | Partially Implemented | Unstable/Unreleased |
| nyxx | Partially Implemented | Unreleased |
| Ackcord | Partially Implemented | Unreleased |
| discord.js | Implemented | |
| JDA | Implemented | |
| Discord4J | Implemented | |
| Javacord | Implemented | |
| Serenity | Implemented | |
| Twilight | Implemented | |
| nostrum | Implemented | |
| Kord | Implemented |
These are libraries that implement it in any capacity, whether in a master branch or in another branch. Discord is expecting not only for the remaining libraries to implement the entire Slash Commands functionality, but also for all the users to migrate by the deadline. People have other responsibilities that don't revolve around Discord's ecosystem, so requesting all these users to do this is absurd.
Unfortunately, no. This is a small bandage over a very large wound. In reality everything bad about the message intent, as mentioned earlier, still applies despite receiving messages that the bot is mentioned in. Even in this utopia where bot developers maintain their message content commands, by virtue this means that users will all have to relearn the bot prefix, which will be bad for usability.
Unfortunately, I do not plan on giving maintainership status to those I do not trust. There is a security issue at play here that I do not feel comfortable with, where an unknown third party could upload malware targeting a bunch of Discord users. It should be noted that I did ask everyone who I was willing to give this library to, and they all declined, respected my decision, and agreed with me that they did not like the direction Discord is going.
You are, however, free to fork the project yourself and implement the improvements that you seek.
In the simplest words: it's not fun. It's not particularly hard to implement slash commands for me, and I already had a mostly working, yet woefully incomplete, local copy made back in May 2021. However, my motivation to continue working on it is pretty much non-existent at this point. Slash Commands represent a change in direction within Discord that I fundamentally do not agree with. It is unfortunate that this feature was rushed out the door in order to add more restrictions to the platform.
Note that my Slash Command implementation was completely different from the discord.ext.commands implementation since the two models are strictly incompatible. So even if I had released my implementation, most users would have had to completely rewrite their bot to support it.
Ideally, nothing. I don't plan on doing anything to the server and it can remain as-is. The library still functions and there's still a lot of code out there written in discord.py. More importantly, the server holds a special place in my heart with a community I'm proud of and I see no reason to burn it to ashes.
Same thing. Nothing will happen there.
Due to the message content intent happening in the future, my bot will more than likely die since it won't be able to moderate. If you want to know what my bot means to me, I wrote a separate write-up on the topic when I was discussing this with Discord staff.
I'm not sure. This decision came from multiple years of grievances from the Discord employees that would just be too much for me to detail in this document. I don't think they'll be fixed or be any better in the future, but only time will tell.
If it weren't for the direction Discord decided to take, I would have loved to continue working on discord.py. I actually really enjoyed working on this library and there were many things I would have liked to explore should time have permitted me to do so. However, underneath everything that the library does is the corporate entity that has repeatedly caused me these grievances that I've amassed over the years. It's hard to separate the two.
My bad. If more questions pop up during the announcement I'll add them back here, or you can just ask me directly in the discord.py server and I'll try to answer.
Perdón.
I'd like to thank the following people for all the help and support they've given me over the years, in alphabetical order.
- aj. Thanks for being the most responsive Discord staff I've ever been in contact with. Your willingness and proactivity when working with us was unparalleled and much appreciated.
- Bryan Forbes. Thanks for taking the time and effort to type hint the library initially. It was of great help.
- Gary. Thanks for being a supporter in the discord.py server and for being so kind to everyone in the server and to me. I greatly appreciate it.
- Hornwitser. Thanks for providing early design feedback for discord.py and untangling the spaghetti in the initial dispatch code.
- Ian Mitchell. Thanks for listening to my incoherent rants and frustration and trying to make things better.
- Ian Webster. Thanks for actually being kind enough to communicate with us when things went way south.
- Imayhaveborkedit. Thanks for being the go-to voice wrangler all these years when I couldn't be bothered.
- Jake. Thanks for actually being our pillar and maintaining the sanity in our Discord API server. Without you, we would have lost our vanity and many more things would have been worse. We'd often say that without your presence our server would cease to exist.
- LeoV. Thanks for being there early on and helping design the logo for the documentation.
- "Mole", you know who you are. Thanks for shedding light into the inequality that us library developers faced.
- NCPlayz. Thanks for being one of the only other persistent contributors to the library. Without you, implementing some features would have been too taxing to do alone.
- spoopy. Thanks for maintaining the code early on and providing invaluable feedback.
- Stanislav. Thanks for being our go-to contact early on in the API days. It was fun.
- The discord.py community. Thanks for being you.
- The other library developers. Thanks for sticking together through all the nonsense. Without our unity I'm pretty sure I would have quit long ago.
- The Red-DiscordBot community. Thanks for being kind and respectful to me. The feedback you guys gave when working with the command framework was invaluable to me.
- The various contributors for discord.py. Thanks for improving various things throughout the library; even the most minor contribution has a large impact.
- The various helpers in the discord.py server. Thanks for taking on a bulk of the hard work which usually goes unappreciated.
And of course, thanks to you for reading through all this.
Until next time.
