Ребята помогите | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой скрипт на основе слитого?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Ребята помогите

Даня

Джун
Автор темы
27 Май 2024
3
0
0
Я только учусь писать боты на питоне, моей сейчас целью является создать бот который считает сообщения пользователей в чате, а потом по команде /top выводит
Написал, но у меня ничего не выходит. Подскажите пожалуйста. А то месяц ломаю голову
 

Даня

Джун
Автор темы
27 Май 2024
3
0
0
HenryEW,
import logging
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
from collections import defaultdict

# Включаем логирование для получения информации о работе бота
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)

# Инициализируем словарь для хранения количества сообщений каждого пользователя
message_counts = defaultdict(int)

# Функция для команды /start
def start(update, context):
update.message.reply_text('Привет! Я бот для подсчета количества сообщений в этом чате.')

# Функция для подсчета сообщений и обновления топа
def count_messages(update, context):
user_id = update.message.from_user.id
message_counts[user_id] += 1

# Функция для команды /top
def top(update, context):
sorted_counts = sorted(message_counts.items(), key=lambda x: x[1], reverse=True)
top_users = "\n".join([f"{context.bot.get_chat_member(update.effective_chat.id, user[0]).user.username}: {user[1]}" for user in sorted_counts])
update.message.reply_text(f"Топ пользователей:\n{top_users}")

def main():
# Инициализация бота и получение токена
updater = Updater("TOKEN", use_context=True)

# Получаем диспетчер для регистрации обработчиков команд и сообщений
dp = updater.dispatcher

# Регистрация обработчиков команд
dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("top", top))

# Регистрация обработчика сообщений
dp.add_handler(MessageHandler(Filters.text & ~Filters.command, count_messages))

# Старт бота
updater.start_polling()

# Бот работает, пока не будет нажата комбинация Ctrl-C
updater.idle()

if name == 'main':
main()
 
Активность:
Пока что здесь никого нет