Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Бизнес Телеграм Бот (Telegram Bot Business)

CWoors Ученик (134), на голосовании 2 недели назад
Ребят, я не понимаю может в этой жизни чего-то. Но либо я дурачок, либо разработчики Telegram допустили один косяк. Сообщать туда мне лень, поэтому напишу здесь:

Есть бот и код:
 import asyncio 

from aiogram import Bot, Dispatcher, types, F
from aiogram.types import Message
from aiogram.enums import ParseMode

import time
from threading import Timer

TOKEN = "Тыгыдым"

bot = Bot(TOKEN)
dp = Dispatcher()

@dp.business_message(F.text)
async def echo(message: Message) -> None:
if (F.text == "code"):
msg = await message.answer("Loading11111")
await asyncio.sleep(1)
await msg.edit_text("Loading")
return

async def on_startup() -> None:
await bot.delete_webhook(True)

print("Работает")
if __name__ == "__main__":
asyncio.run(dp.start_polling(bot))

Это рабочий код, не работает только часть:
 msg = await message.answer("Loading11111")  
await asyncio.sleep(1)
await msg.edit_text("Loading")
По такой интересной причине, что бот не может редактировать сообщения, которые пишет от моего имени... Это вообще блин как? То есть, я могу редактировать сообщения от бота, а он не может. Очень знаете - странно. Можете пожалуйста подсказать, кто знает. Как обойти эту систему, либо подскажите рабочий вариант кода. А то я чего-то не соображаю(
Голосование за лучший ответ
Абдумуталибхон М. Мыслитель (5463) 1 месяц назад
Иди на форумы программистов, а не троллей
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (265313) 1 месяц назад
Попробуй заменить


@ dp.business _message(F.text)
async def echo(message: Message) -> None:
if (F.text == "code"):


на

@dp.message_handler(lambda message: message.text == "code")
async def echo(message: Message) -> None:
CWoorsУченик (134) 1 месяц назад
Прикол в том, что "business _message" нужен именно для бизнес бота. Понятно, что если я изменю как ты говоришь и запущу как обычный бот, оно будет работать. Меня интересует именно бизнес бот. Так что твоё решение к сожалению отпадает.
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (265313) CWoors, F.text (Field text) — поле, чтобы задать фильтр для работы с сообщением именно по полю text для хэндлера, а не переменная для хранения значений. Декораторы задают лишь правила для сидящей под ним функции...
 @dp.business_message(F.text, F.from_user.is_bot == <True, False>)
async def echo(message: Message) -> None:  
    if message.text == "code": 
Рустам Абдрашитов Мыслитель (9542) 1 месяц назад
На
 import asyncio 
import logging
from aiogram import Bot, Dispatcher
from aiogram.types import Message
from aiogram.contrib.middlewares.logging import LoggingMiddleware

logging.basicConfig(level=logging.INFO)

TOKEN = "Ваш_токен_здесь"

bot = Bot(token=TOKEN)
dp = Dispatcher(bot)

dp.middleware.setup(LoggingMiddleware())

@dp.message_handler()
async def echo(message: Message) -> None:
if message.text == "code":
msg = await message.answer("Loading11111")
await asyncio.sleep(1)
await msg.edit_text("Loading")

async def on_startup(dp):
logging.info("Бот запущен и готов к работе")
await bot.delete_webhook(drop_pending_updates=True)

if __name__ == "__main__":
asyncio.run(dp.start_polling(on_startup=on_startup))
CWoorsУченик (134) 1 месяц назад
Не рабооотааает. Сам попробуй запустить, потом расскажешь как успехи)
Похожие вопросы