дискорд бот на питоне для аукциона

Рейтинг: 0Ответов: 1Опубликовано: 23.04.2023

Я пытался сделать аукцион, но у меня не получилось. Нужно чтобы бот удалял все сообщения кроме цифр и "да" или "нет". Нужно чтобы бот активировался и начинался отсчет в неделю и выявлял самое большое число, если число больше 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)