diff --git a/db.py b/db.py
index e2ea45b..4f7e3ee 100644
--- a/db.py
+++ b/db.py
@@ -78,6 +78,26 @@ class BotDB:
print(error)
+ def get_username(self, user_id):
+ """Достаем id юзера в базе по его user_id"""
+ try:
+ result = self.cursor.execute("SELECT `username` FROM `our_users` WHERE `user_id` = ?", (user_id,))
+ return result.fetchone()[0]
+ except sqlite3.Error as error:
+ print(error)
+
+ def get_all_user_id(self):
+ """Достаем все айдишники юзеров из БД и преобразуем их в список"""
+ try:
+ result = self.cursor.execute("SELECT `user_id` FROM `our_users`",)
+ fetch_all = result.fetchall()
+ list_of_users = []
+ for i in fetch_all:
+ list_of_users.append(i[0])
+ return list_of_users
+ except sqlite3.Error as error:
+ print(error)
+
def get_user_first_name(self, user_id):
try:
result = self.cursor.execute("SELECT `first_name` FROM `our_users` WHERE `user_id` = ?", (user_id,))
diff --git a/voice_bot.py b/voice_bot.py
index 197b1be..1fa61ec 100644
--- a/voice_bot.py
+++ b/voice_bot.py
@@ -3,6 +3,8 @@ import os
import sys
from pathlib import Path
from time import sleep
+
+import db
from db import BotDB
import telebot
import random
@@ -72,6 +74,11 @@ def telegram_bot():
bot.send_message(message.chat.id, "Если не знаешь, что сказать, можешь просто прочитать любое текстовое сообщение из недавно полученных или отправленных (или спеть, рассказать стихотворенье)", parse_mode='html', reply_markup=markup,
disable_web_page_preview=not PREVIEW_LINK)
time.sleep(0.8)
+ bot.send_message(message.chat.id,
+ "Так же можешь ознакомиться с инструкцией к боту по команде /help",
+ parse_mode='html', reply_markup=markup,
+ disable_web_page_preview=not PREVIEW_LINK)
+ time.sleep(0.8)
msg = bot.send_message(message.chat.id, "ну всё, достаточно инструкций. записывайся! Микрофон твой - 🎤", parse_mode='html', reply_markup=markup,
disable_web_page_preview=not PREVIEW_LINK)
bot.register_next_step_handler(msg, standup)
@@ -154,6 +161,8 @@ def telegram_bot():
from_chat_id=message.chat.id,
message_id=message.message_id)
bot.register_next_step_handler(msg, standup)
+ elif message.text == '/help':
+ help_function(message)
else:
msg = bot.send_message(chat_id=message.chat.id, text='Я тебя не понял, воспользуйся меню', reply_markup=markup)
bot.register_next_step_handler(msg, standup)
@@ -236,6 +245,61 @@ def telegram_bot():
def restart_function(message):
return standup(message)
+ @bot.message_handler(commands=['help'])
+ def help_function(message):
+ msg = bot.send_message(chat_id=message.chat.id, text='Скорее всего ответы на твои вопросы есть здесь, ознакомься: https://telegra.ph/Instrukciya-k-botu-Golosa-Bijsk-10-11-2'
+ '\nЕсли это не поможет, пиши в тг: @Kerrad1',disable_web_page_preview=not PREVIEW_LINK)
+ bot.register_next_step_handler(msg, standup)
+
+ @bot.message_handler(commands=['send'])
+ def notify(message):
+ """Функция для рассылки сообщений пользователям бота"""
+ admins = [842766148]
+ command_sender = message.from_user.id
+ if command_sender in admins:
+ markup = types.InlineKeyboardMarkup(row_width=1)
+ button = types.InlineKeyboardButton(text='Я прочитал ', callback_data='from_user')
+ success_send_message = 0
+ error_send_message = 0
+ markup.add(button)
+ user_ids = BotDB.get_all_user_id()
+ # Парсим список id юзеров для рассылки и рассылаем сообщения
+ for i in user_ids:
+ username = BotDB.get_username(i)
+ try:
+ bot.send_message(chat_id=i,
+ text='Привет, на связи админ. Первая тестовая рассылка через этого бота, не суди строго, обещаю не злоупотреблять этим))\n'
+ 'Собственно хотел сказать следующее, сегодня ночью обновил бота, добавил ему две функции /restart и /help. '
+ 'Рекомендую ознакомиться со статьей в /help, там я подробно описал как сейчас все работает. '
+ 'Если у тебя будут предложения по доработке бота или новому функционал, пиши не стесняйся @Kerrad1. '
+ 'Так же прошу нажать на кнопку под сообщением, чтобы я понял что ты прочитал сообщение❤️\n\nНа этом у меня все, пока, до следующего релиза', reply_markup=markup)
+ bot.send_message(chat_id=message.chat.id,
+ text=f'Успешно отправлено - @{username}')
+ success_send_message += 1
+ except Exception as e:
+ bot.send_message(chat_id=message.chat.id,
+ text=f'Этому юзеру не отправилось - @{username}')
+ error_send_message += 1
+ bot.send_message(chat_id=message.chat.id,
+ text=f'Количество успешных отправок - {success_send_message}', parse_mode='html')
+ bot.send_message(chat_id=message.chat.id,
+ text=f'Количество неуспешных отправок - {error_send_message}', parse_mode='html')
+ standup(message)
+ else:
+ bot.send_message(command_sender, f'у вас нет прав для запуска команды')
+ bot.forward_message(chat_id=GROUP_FOR_LOGS, from_chat_id=message.chat.id, message_id=message.id)
+ standup(message)
+
+ @bot.callback_query_handler(func=lambda call: True)
+ def post_for_group(call):
+ if call.data == 'from_user' and call.message.content_type == 'text':
+ try:
+ command_sender = call.message.from_user.id
+ bot.answer_callback_query(call.id, text="Мне приятно, спасибо ❤")
+ #Попробовать варианты если не сработает call.from_user.username
+ bot.send_message(chat_id=842766148, text=f'Юзер с ником @{call.message.chat.username} по имени {call.message.chat.first_name} прочитал сообщение')
+ except:
+ print('что-то не так')
if __name__ == '__main__':
telegram_bot()