Я пытаюсь остановить выполнение бота. Но я не могу этого сделать. Когда я пишу в телеграм-боте команду /stop, что он должен остановиться. Код:
# -*- coding: utf-8 -*-
import telebot
import asyncio
from telethon import TelegramClient,sync,events,utils
from telethon.events import StopPropagation
api_id = ***
api_hash = '******'
username = '*****'
id_channel = -***
token = '*****'
bot = telebot.TeleBot(token)
client = TelegramClient(username, api_id, api_hash)
@bot.message_handler(commands=['start','stop'])
def start(message):
if '/start' in message.text:
handler_state(True)
string = f'Привет {message.from_user.first_name}!\nВведите канал для парсинга и свой канал.\nПример:
channel_pars,your_channel' bot.send_message(message.chat.id, string, parse_mode='html')
elif '/stop' in message.text:
string = 'Парсер остановлен!' bot.send_message(message.chat.id, string, parse_mode='html')
handler_state(False)
def handler_channel(my_channel,parse_channel,stop_script='start'):
@client.on(events.NewMessage(chats=(parse_channel)))
async def normal_handler(event):
if 'stop' in stop_script:
await client.disconnect()
#print(event.message.file.media) # картинка
message = event.message.to_dict()['message']
send_data(message)
client.start()
client.run_until_disconnected()
def send_data(message):
bot = telebot.TeleBot(token)
bot.send_message(id_channel,message)
def handler_state(state):
if not state:
handler_channel('default','default','stop')
my_channel = None
parse_channel = None
@bot.message_handler(content_types=['text'])
def send_message(message):
if state:
if ',' not in message.text:
return bot.send_message(message.chat.id,'Проверьте правильность ввода!',parse_mode='html') channels = message.text.split(',')
my_channel = channels[-1]
parse_channel = channels[0]
if not my_channel or not parse_channel:
return bot.send_message(message.chat.id,'Проверьте правильность ввода!',parse_mode='html')
bot.send_message(message.chat.id,f'Введенные данные: {parse_channel},{my_channel} \n Парсим',parse_mode='html')
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
if state:
handler_channel(my_channel,parse_channel)
bot.polling(none_stop=True)
Вот какая ошибка:
p1.py:36: RuntimeWarning: coroutine 'AuthMethods._start' was never awaited
client.start()
p1.py:37: RuntimeWarning: coroutine 'UpdateMethods._run_until_disconnected' was never awaited
client.run_until_disconnected()
Подробнее здесь: https://stackoverflow.com/questions/621 ... p-telethon
Как остановить телемарафон? ⇐ Python
Программы на Python
1770242724
Anonymous
Я пытаюсь остановить выполнение бота. Но я не могу этого сделать. Когда я пишу в телеграм-боте команду /stop, что он должен остановиться. Код: [b]
# -*- coding: utf-8 -*-
import telebot
import asyncio
from telethon import TelegramClient,sync,events,utils
from telethon.events import StopPropagation
api_id = ***
api_hash = '******'
username = '*****'
id_channel = -***
token = '*****'
bot = telebot.TeleBot(token)
client = TelegramClient(username, api_id, api_hash)
@bot.message_handler(commands=['start','stop'])
def start(message):
if '/start' in message.text:
handler_state(True)
string = f'Привет {message.from_user.first_name}![/b]\nВведите канал для парсинга и свой канал.\n[i]Пример:
channel_pars,your_channel[/i]'[b] bot.send_message(message.chat.id, string, parse_mode='html')
elif '/stop' in message.text:
string = 'Парсер остановлен![/b]'[b] bot.send_message(message.chat.id, string, parse_mode='html')
handler_state(False)
def handler_channel(my_channel,parse_channel,stop_script='start'):
@client.on(events.NewMessage(chats=(parse_channel)))
async def normal_handler(event):
if 'stop' in stop_script:
await client.disconnect()
#print(event.message.file.media) # картинка
message = event.message.to_dict()['message']
send_data(message)
client.start()
client.run_until_disconnected()
def send_data(message):
bot = telebot.TeleBot(token)
bot.send_message(id_channel,message)
def handler_state(state):
if not state:
handler_channel('default','default','stop')
my_channel = None
parse_channel = None
@bot.message_handler(content_types=['text'])
def send_message(message):
if state:
if ',' not in message.text:
return bot.send_message(message.chat.id,'Проверьте правильность ввода![/b]',parse_mode='html')[b] channels = message.text.split(',')
my_channel = channels[-1]
parse_channel = channels[0]
if not my_channel or not parse_channel:
return bot.send_message(message.chat.id,'Проверьте правильность ввода![/b]',parse_mode='html')[b]
bot.send_message(message.chat.id,f'Введенные данные: {parse_channel},{my_channel} \n Парсим[/b]',parse_mode='html')
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
if state:
handler_channel(my_channel,parse_channel)
bot.polling(none_stop=True)
Вот какая ошибка:
p1.py:36: RuntimeWarning: coroutine 'AuthMethods._start' was never awaited
client.start()
p1.py:37: RuntimeWarning: coroutine 'UpdateMethods._run_until_disconnected' was never awaited
client.run_until_disconnected()
Подробнее здесь: [url]https://stackoverflow.com/questions/62110516/how-to-stop-telethon[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия