дискорд бот на питоне для аукциона
Я пытался сделать аукцион, но у меня не получилось. Нужно чтобы бот удалял все сообщения кроме цифр и "да" или "нет". Нужно чтобы бот активировался и начинался отсчет в неделю и выявлял самое большое число, если число больше 100, то надо спросить у пользователя, который отправил сообщение уверен ли он в том что он готов потратить эту сумму. Если кто-то мне готов помочь, то я буду очень рад. Заранее спасибо.
Ответы (1 шт):
Автор решения: Алексей Сенокосов
→ Ссылка
import discord
import re
from datetime import datetime, timedelta
client = discord.Client()
# Токен для подключения к Discord
TOKEN = 'ваш токен'
# Дата начала отсчета недели
start_date = datetime.now().date() - timedelta(days=datetime.now().weekday())
# Переменная для хранения максимального числа
max_number = 0
@client.event
async def on_ready():
print('Бот подключился к Discord')
@client.event
async def on_message(message):
global max_number
# Проверяем, что сообщение отправлено не ботом
if message.author == client.user:
return
# Удаляем из сообщения все, кроме цифр и "да" или "нет"
message_text = re.sub('[^0-9даynetДАНЕТ]', '', message.content.lower())
# Проверяем, есть ли в сообщении число и является ли оно больше 100
if any(char.isdigit() for char in message_text):
number = int(re.findall('\d+', message_text)[0])
if number > 100:
# Отправляем сообщение с запросом подтверждения действия у пользователя
confirmation_message = await message.channel.send(f'Вы уверены, что готовы потратить {number} рублей? (да/нет)')
confirmation = await client.wait_for('message', timeout=30.0, check=lambda m: m.author == message.author and m.channel == message.channel)
if confirmation.content.lower() != 'да':
return
# Проверяем, является ли сообщение ответом "да" или "нет"
if message_text in ['да', 'нет']:
# Добавляем значение числа в переменную max_number
max_number = max(max_number, number)
await message.channel.send(f'Максимальное число на этой неделе: {max_number}')
# Проверяем, прошла ли неделя, и сбрасываем максимальное значение числа
if datetime.now().date() - timedelta(days=datetime.now().weekday()) > start_date:
start_date = datetime.now().date() - timedelta(days=datetime.now().weekday())
max_number = 0
client.run(TOKEN)