Как дать тайм аут в дискорде

Я работаю над Discord bot , которому нужно update чей-то ник, а затем через 2 часа сбрасываю его до нормального состояния. У меня есть весь код, настроенный и работающий, когда тайм-аут установлен на несколько секунд, но когда я увеличиваю тайм-аут до 2 часов, я получаю failed request на сервер Discord. Я думаю, это потому, что этот канал не остается на связи так долго — не уверен. Вот ошибка:

UnhandledPromiseRejectionWarning: FetchError: request to https://discord.com/api/v7/guilds/297251675616444416/members/711322838556213319 failed, reason: getaddrinfo ENOTFOUND discord.com at RequestHandler.execute (C:Usersjaphyprojectsenhancednode_modulesdiscord.jssrcrestRequestHandler.js:93:15) at runMicrotasks () at processTicksAndRejections (internal/process/task_queues.js:93:5) at async RequestHandler.push (C:Usersjaphyprojectsenhancednode_modulesdiscord.jssrcrestRequestHandler.js:39:14) at async GuildMember.edit (C:Usersjaphyprojectsenhancednode_modulesdiscord.jssrcstructuresGuildMember.js:312:5)
Вот сам код:
function nicknameTimeout(memberID, memberGuildID) < guildVar = client.guilds.cache.get(memberGuildID); member = guildVar.members.cache.get(memberID); setTimeout(() => < guildVar = client.guilds.cache.get(memberGuildID); member = guildVar.members.cache.get(memberID); nickname = member.nickname; if (typeof nickname === «object») < nickname = member.user.username; >if (nickname.endsWith(«UPDATED***»)) < nickname = nickname.slice(0, -11); member.setNickname(nickname, «»); >>, 7200000); >

Участники сервера Discord.py Timeout

Несколько месяцев назад мне пришла в голову идея сделать функционального бота Discord для сервера моего друга. Мой друг спросил меня, могу ли я сделать команду тайм-аута для члена, и я начал свое исследование. Поскольку discord.py больше не будет обновляться, этот вопрос может быть бесполезным и напрасным, но я действительно хочу попробовать его. Я знаю, что Stack Overflow — это изменение кода, а не сервис написания кода, но я действительно не знаю, как мне это делать.

НОВАЯ РОЛЬ В ДИСКОРДЕ — MUTED | КАК ЗАТКНУТЬ НЕАДЕКВАТОВ В ДИСКОРД!

Мои идеи заключались в том, чтобы дать участнику роль «Без звука» или «Тайм-аут» на указанное время и удалить его снова после остановки таймера, но тогда я должен использовать цикл while, в результате чего остальная часть кода больше не будет доступна , то же самое касается использования функции time.sleep .

Я не смог найти ничего об этом в Интернете, поэтому моя единственная надежда — это переполнение стека. Я не хочу, чтобы вы писали в своем ответе целые программы, именно там, где я мог бы искать, чтобы я мог сам вычислить все остальное.

Еще по теме:  Как установить пароль на дискорд

Itsjul1an 23 Дек 2021 в 11:30

2 ответа

Лучший ответ

Discord недавно выпустил функцию тайм-аута, которая действительно хороша и решает ваши проблемы с созданием / удалением роли без разрешения на отправку сообщений. Discord.py может не получать обновления, но это не мешает вам писать свои собственные запросы к Discord API, или вы также можете использовать одну из форков, в которых это уже реализовано.

Развод с Discord Nitro #shorts

Вот один простой сценарий, не связанный с ботами, который я написал, чтобы заставить его работать:

import pprint import requests import datetime BASE = «https://discord.com/api/v9/» TOKEN = «BOT TOKEN» def timeout_user(*, user_id: int, guild_id: int, until: int): endpoint = f’guilds//members/’ headers = «> url = BASE + endpoint timeout = (datetime.datetime.utcnow() + datetime.timedelta(minutes=time_in_mins)).isoformat() json = session = requests.patch(url, json=json, headers=headers) if session.status_code in range(200, 299): return session.json() else: return print(«Did not find anyn», session.status_code) guild_id = 231 user_id = 123 time_in_mins = 2 member = timeout_user(user_id=user_id, guild_id=guild_id,until=time_in_mins) pprint.pprint(member)

Поскольку discord.py асинхронный, вам может понадобиться асинхронный код. Вот одна быстрая интеграция

Вы можете узнать больше о конечной точке здесь

Источник: question-it.com

Тайм-аут команды | Discord.js

Я хотел бы ограничить использование команды «, привет». Я хочу, чтобы в течение 10-секундного таймаута каждый пользователь вводил «, привет». И если пользователь вводит команду до этого кулдауна, он отправит сообщение о том, кто использовал последнюю команду и как долго оставался кулдаун. Вот что я хочу, чтобы результат выглядел так:

User1: ,hello Bot: hello (After 1 second) User2: ,hello Bot: User1 has already used this command, please wait another 9 seconds to use it again (After 9 seconds) User 2: ,hello Bot: hello
Вся помощь приветствуется. Благодаря,
qtt qtt 27 дек. 2017, в 20:40
Поделиться
Поделиться:

1 ответ

Лучший ответ

Вам нужно будет сохранить последнюю дату, когда использовалась команда, а затем соответствующим образом перевернуть поток. Чтобы также показать, кто в последний раз использовал эту команду, вам нужно сохранить эту информацию с меткой времени. Вот пример, основанный на вашем:

Еще по теме:  Как поставить префикс в дискорде на сервере

const Discord = require(«discord.js»); const PREFIX = «,»; const token = «my token»; const bot = new Discord.Client(); let lastHelloCommandDate, lastHelloCommandUser; bot.on(‘ready’, () => < bot.on(‘message’, message =>< if (!message.content.startsWith(PREFIX)) return; //if not command ignore message var args = message.content.substring(PREFIX.length).split(» «); //splits commands so each word = pos in array switch (args[0].toLowerCase()) < //not case-sensitive anymore case «hello»: hello(message); break; //rest of the commands >>>) >) function hello(message) < const now = new Date(); if (now — lastHelloCommandDate >10 * 60 * 1000) < // It been more than 10 mins message.channel.send(«hello»); lastHelloCommandDate = now; lastHelloCommandUser = message.sender; >else < // It been less than 10 mins // send a direct message to the user // i don’t know if message.sender exists, check the api message.sender.send(‘Command last used by $’); > >

Этот образец переработан, так что команды хранятся в одном объекте и динамически проверяются. Это устраняет необходимость в инструкции switch.

const Discord = require(«discord.js»); const PREFIX = «,»; const token = «my token»; const bot = new Discord.Client(); let lastHelloCommandDate, lastHelloCommandUser; bot.on(‘ready’, () => < bot.on(‘message’, message =>< if (!message.content.startsWith(PREFIX)) return; //if not command ignore message var args = message.content.substring(PREFIX.length).split(» «); //splits commands so each word = pos in array const command = args[0].toLowerCase(); if (!commands[command]) < throw new Error(‘Unknown command supplied: $’); > commands[command](message); >>>) >) const commands = < hello: message => < const now = new Date(); if (now — lastHelloCommandDate >10 * 60 * 1000) < // It been more than 10 mins message.channel.send(«hello»); lastHelloCommandDate = now; lastHelloCommandUser = message.sender; >else < // It been less than 10 mins // send a direct message to the user // i don’t know if message.sender exists, check the api message.sender.send(‘Command last used by $’); > > >;
Chance Hudson 27 дек. 2017, в 20:12
Поделиться

Да, lastHelloCommandDate должно быть инициализировано в 0 . Если он не undefined (как написано выше), результатом будет new Date() — undefined что приводит к NaN (который не больше любого числа).

Еще по теме:  Сделать анимированный баннер дискорд

Chance Hudson 27 дек. 2017, в 20:04

Ещё вопросы

  • 0 Определить закрытие входа в Facebook с помощью кнопки «X»
  • 1 слушатель push-уведомлений sw-precache
  • 1 принимать имена файлов с помощью командной строки в Java
  • 1 java-связывание со свободной функцией c: как правильно освободить объект
  • 1 Скребок продолжает сканировать идентичные ссылки
  • 0 Allegro5: выводит инт на экран
  • 0 Проверить ключ массива PHP> Значение
  • 0 Путь к изображению не работает в рамках YII?
  • 0 Асинхронный обратный вызов не был вызван в течение тайм-аута — модульное тестирование службы Typescript Ionic — TypeError: Невозможно прочитать свойство «push» из неопределенного
  • 1 Поднять событие, которое передает другое
  • 0 mysql 0000-00-00 ошибка обновления
  • 0 нажмите следующую страницу [Выбрать форму]
  • 0 необходимо отобразить изображение при наведении курсора — карта изображения с использованием Raphaeljs
  • 0 Google Map API скачать карту
  • 0 Невозможно использовать возвращаемое значение метода в контексте записи
  • 0 Qt отсутствует библиотека?
  • 0 Как получить параметры в contollerFactory Zend 2?
  • 0 порядок php по 2 параметрам
  • 0 синтаксическая ошибка Вызов неопределенного метода mysqli :: num_rows ()
  • 0 Автоматически включая несколько исходных файлов с -gcc?
  • 0 Стрлен переменной GET
  • 0 добавить несколько графиков d3, nvd3, используя для цикла
  • 0 Rails — Получить URL-адрес Paperclip с помощью SQL-запроса
  • 0 NodeJS асинхронный вызов MySQL к пулу соединений не возвращает результата
  • 0 Событие щелчка селектора jquery не запускается с угловым
  • 0 SQL Как удалить данные из таблицы с помощью INNER JOIN
  • 1 Как остановить масштабирование навигационной панели инструментов Matplotlib при обновлении графика?
  • 0 Проблема с пробелами в HTML — все браузеры
  • 0 Загрузка разных объектов из файла
  • 0 Android Room — Обработка списка объектов в объекте и запрос результатов
  • 0 Уникальный указатель в связанном списке
  • 1 отображать необъектные значения во вложенных массивах в javascript
  • 0 Шаблон FlowType не изменяет размеры элементов
  • 1 Recyclerview разделитель с пользовательским заполнением
  • 1 Canvas неправильно рисует край при извлечении изображения из спрайта
  • 1 загрузить больше данных на страницу прокрутки
  • 1 Получить мобильный оператор в приложении Windows Phone XAML
  • 0 Передать пользовательскую переменную в анонимную функцию щелчка jQuery
  • 0 Вставьте, если существует
  • 0 Как перенаправить со службы на основной контроллер в angularjs?

Источник: overcoder.net

Рейтинг
( Пока оценок нет )
Загрузка ...