RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-607980

Hit's questions

Martin Hope
Hit
Asked: 2025-01-14 21:17:59 +0000 UTC

命令 /report python teleBot 不起作用

  • 5

/report 命令应按如下方式工作:用户看到违反规则的消息并使用命令进行响应,有关报告的消息将发送到管理组,如果用户中的 5 个人报告了违规行为,则会将他们保留一天,以下是代码:

# Хранение данных о репортах
report_data = defaultdict(lambda: {'message_id': None, 'responses': set()})

@bot.message_handler(commands=['report'])
def handle_report(message):
    chat_id = message.chat.id
    report_data[chat_id]['message_id'] = message.message_id
    report_data[chat_id]['responses'].clear()
    bot.reply_to(message, "Пожалуйста, ответьте на сообщение, нарушающее правила, чтобы сообщить о нарушении.")

# Обработка ответа на сообщение с /report
@bot.message_handler(func=lambda msg: msg.reply_to_message and msg.reply_to_message.message_id in [data['message_id'] for data in report_data.values()])
def handle_response(message):
    chat_id = message.chat.id
    report = report_data[chat_id]

    # Добавляем ID пользователя
    report['responses'].add(message.from_user.id)
    bot.send_message(admin_grops,f"послали репорт на >> tg://user?id={message.from_user.id}, @{message.from_user.username} " + message.text)
    print(f"Пользователь @{message.from_user.username} сообщил о нарушении.")

    # Проверяем, достаточно ли ответов для бана
    if len(report['responses']) >= 5:
        user_to_ban = message.reply_to_message.from_user.id
        bot.kick_chat_member(chat_id, user_to_ban, until_date=int(time.time()) + 86400)
        bot.send_message(admin_grops, f"Пользователь {user_to_ban} получил бан на 24 часа за нарушение.")
        
# Логируем бан
        with open('ban_list.txt', 'a', encoding='utf-8') as f:
            log_entry = f"{datetime.now()} - Пользователь {user_to_ban} получил бан\n"
            f.write(log_entry)

        # Удаляем данные о репорте
        del report_data[chat_id]

但实际上代码的工作方式是这样的:用户发送一份报告(正如我之前所描述的),但机器人报告说该消息应该是对另一条消息的回应,尽管事实上一切都是正确的。但是报告不会通过,但如果另一个用户响应/report 命令,报告将通过同一个用户。请帮忙

python
  • 2 个回答
  • 29 Views
Martin Hope
Hit
Asked: 2024-09-25 01:41:09 +0000 UTC

电报机器人中一些明确定义的功能不起作用

  • 5

关于项目:

电报机器人,群组管理员

特征:

  • 反垃圾邮件
  • 报告
  • 按时间发送消息
  • 问候和告别

问题:

报告命令不起作用,按时间发送消息聊天和反垃圾邮件也不起作用。令人惊讶的是,该报告在添加反垃圾邮件后就停止工作了

import telebot
from collections import defaultdict
import time
import psutil
import schedule
import datetime
import os
import requests
from datetime import datetime

token=':)'

help_user='/report забань дибила в чяте\n'

message = 'тут будет текст'

bot=telebot.TeleBot(token)

def ping():
    start_time = time.time()
    k=requests.get('https://yandex.ru')
    k.status_code
    response=time.time() - start_time
    print('ping',response)
    return response





def monitor_resources():
    # Получаем использование CPU, RAM, дискового пространства
    print('manitor')
    cpu_percent = psutil.cpu_percent()
    ram_percent = psutil.virtual_memory().percent
    disk_percent = psutil.disk_usage('/').percent
    # Выводим информацию в консоль или в лог-файл
    print(f"CPU: {cpu_percent}%")
    print(f"RAM: {ram_percent}%")
    print(f"Disk: {disk_percent}%")
    return cpu_percent,ram_percent,disk_percent

#@bot.message_handler(content_types='text')
#def message_reply(message):
#    print('log')
#    print('id:',message.from_user.id)
#    print('username:',message.from_user.username)
#    print(message.from_user.first_name)
#    print(message.text)



@bot.message_handler(commands=['help'])
def message_handler(message):
     bot.send_message(message.chat.id,help_user)
@bot.message_handler(commands=['manitor'])
def message_handler(message):
      cpu_percent,ram_percent,disk_percent=monitor_resources()
      bot.send_message(message.chat.id,f"CPU: {cpu_percent}%")
      bot.send_message(message.chat.id,f"RAM: {ram_percent}%")
      bot.send_message(message.chat.id,f"Disk: {disk_percent}%")
      bot.send_message(message.chat.id,f"ping: {ping()}")
      
@bot.message_handler(commands=['time_server'])
def message_handler(message):
     now = datetime.now() 
     time = now.strftime("%H:%M")
     bot.send_message(message.chat.id,time)



last_time = {}
@bot.message_handler(content_types=['text'])
def message_handler(message):                                  
    if message.chat.id not in last_time:
        last_time[message.chat.id] = time.time()
    else:
        if (time.time() - last_time[message.chat.id]) * 1000 < 500:
            return 0
        last_time[message.chat.id] = time.time()
report_data = defaultdict(lambda: {'message_id': None, 'responses': set()})
@bot.message_handler(content_types=['text'])
def handle_message(message):
    count = {}
    check_string = message.text
    total_chars = len(check_string)
    
    for s in check_string:
        count[s] = count.get(s, 0) + 1
    for char, occurrences in count.items():
        if occurrences > 1:
            percentage = (occurrences / total_chars) * 100
            if percentage >= 30: 
                bot.reply_to(message, 'Обнаружен спам')
                report_data = defaultdict(lambda: {'message_id': None, 'responses': set()})
    if total_chars > 500: 
        bot.reply_to(message, 'Обнаружен спам: слишком длинное сообщение')
        report_data = defaultdict(lambda: {'message_id': None, 'responses': set()})


# Словарь для хранения данных о репортах
report_data = defaultdict(lambda: {'message_id': None, 'responses': set()})

@bot.message_handler(commands=['report'])
def handle_report(message):
    # Сохраняем сообщение, на которое будет отправлен ответ
    bot.reply_to(message, "репорт отправлен")
    report_data[message.chat.id]['message_id'] = message.message_id
    report_data[message.chat.id]['responses'].clear()  # Очищаем предыдущие ответы
    bot.reply_to(message, "Пожалуйста, ответьте на сообщение, чтобы сообщить о нарушении.")

@bot.message_handler(func=lambda message: message.reply_to_message and message.reply_to_message.message_id == report_data[message.chat.id]['message_id'])
def handle_response(message):
    report = report_data[message.chat.id]
    # Добавляем пользователя, ответившего на сообщение
    report['responses'].add(message.from_user.id)
    # Проверяем, ответили ли 5 уникальных пользователей
    if len(report['responses']) >= 1:  # Измените на 5, если нужно
        user_to_ban = message.reply_to_message.from_user.id
        # Ограничиваем пользователя на 24 часа
        bot.restrict_chat_member(message.chat.id, user_to_ban, until_date=int(time.time()) + 86400)
        bot.send_message(message.chat.id, f"Пользователь {user_to_ban} получил мут на 24 часа за нарушение.")
        # Записываем информацию о нарушении в файл
        with open('нарушители.txt', 'a', encoding='utf-8') as f:
            data = f"{datetime.now()} - Пользователь {user_to_ban} - reportn"
            f.write(data)
        # Удаляем данные о репорте
        del report_data[message.chat.id]

def add():
    # Задаем время отправки сообщения
    now = datetime.now() 
    current_time = now.strftime("%H:%M")
    #Запускаем цикл для проверки времени
    if current_time == '12:00':#Выставляете ваше время
        bot.send_message(chat_id=message.chat.id, text=message)
    elif current_time == '14:00':
         bot.send_message(chat_id=message.chat.id, text=message)
    elif current_time == '16:00':
         bot.send_message(chat_id=message.chat.id, text=message)
    elif current_time == '18:00':
         bot.send_message(chat_id=message.chat.id, text=message)
    elif current_time == '20:00':
         bot.send_message(chat_id=message.chat.id, text=message)
    elif current_time == '22:00':
         bot.send_message(chat_id=message.chat.id, text=message)
    elif current_time == '08:00':
         bot.send_message(chat_id=message.chat.id, text=message)
    elif current_time == '06:00':
        bot.send_message(chat_id=message.chat.id, text=message)
    elif current_time == '21:28':
         bot.send_message(chat_id=message.chat.id, text=message)


@bot.message_handler(content_types= ['new_chat_members'])
def greeting(message):
    bot.reply_to(message, 'приветствую')
@bot.message_handler(content_types= ['left_chat_member'])
def greeting(message):
    bot.reply_to(message, 'пака :(')


@bot.message_handler(content_types=['text'])
def response(message):
    get_message_bot = message.text.strip().lower()
#print(message.from_user.first_name)
#print(message.from_user.last_name)
while True:
  try:
   add()
   bot.polling(none_stop = True)
   schedule.run_pending()
   time.sleep(1)
  except Exception as e:
   time.sleep(2)
python
  • 1 个回答
  • 22 Views
Martin Hope
Hit
Asked: 2024-08-08 01:12:37 +0000 UTC

我正在用Python编写一个简单的sftp服务器,出现错误

  • 5
import paramiko
import os

kast ='>>'
client={}
sftp_client=''
        

file1 = open(f"{os.getcwd()}\\server\\setings.conf", "r")
while True:
    # считываем строку
    line = file1.readline()
    # прерываем цикл, если строка пустая
    if not line:
        break
    # выводим строку
    pers, parametre = line.strip().split('-')
    client[pers] =parametre
# закрываем файл
file1.close
#except:
#    print('eror file 1') 
#    print('возможно в папке сервер оцуцтвует файл setings.conf')  
print(client)
#os.chdir('. . / ')
os.chdir('file')



def config():
    print(f'host ip: {client['host']}')
    print(f'port: {client['port']}')
    print(f'user name: {client['username']}')
    print(f'password: {client['password']}')
config()

 
def create_sftp_client(host, port, username, password):
    host=str(host)
    transport = paramiko.Transport((host, port))
    transport.connect(username=username, password=password)
 
    sftp_client = paramiko.SFTPClient.from_transport(transport)
 
    return sftp_client

def upload_file_to_server(sftp_client, local_file, remote_file):
    sftp_client.put(local_file, remote_file)
    
def download_file_from_server(sftp_client, remote_file, local_file):
    sftp_client.get(remote_file, local_file)

#sftp_client=create_sftp_client(client['host'],client['port'],client['username'],client['password'])
#print(sftp_client)

#ftp_client = create_sftp_client(client['host'],client['port'],client['username'],client['password'])
#upload_file_to_server(sftp_client, file_upload , "remote_file")

#ftp_client = create_sftp_client(client['host'],client['port'],client['username'],client['password'])
#download_file_from_server(sftp_client, "remote_file", file_download)

while True:
    server_command=input(f'sftp server{kast}')
    if server_command == 'exit':
        break
        exit()
    elif server_command =='config':
        config()
    elif server_command.startswith("upload"):
        file_upload = server_command.split("-f")[1]
        if sftp_client == 'NaN':
            print("\033[1;31;40m  error not client \n")
        ftp_client = create_sftp_client(client['host'],client['port'],client['username'],client['password'])
        upload_file_to_server(sftp_client, file_upload , "remote_file")
    elif server_command.startswith("clien"):
        key = server_command.split("-")[1]
        if key =="run":
            sftp_client=create_sftp_client(str(client['host']),str(client['port']),str(client['username']),str(client['password']))
            print(sftp_client)
        elif key == 'close':
            try:
                sftp_client.close()
            except:
                print('error')    
    elif server_command.startswith("download"):
        file_download = server_command.split("-f")[1]
        if sftp_client == 'NaN':
            print("\033[1;31;40m  error not client \n")
        ftp_client = create_sftp_client(client['host'],client['port'],client['username'],client['password'])
        download_file_from_server(sftp_client, "remote_file", file_download)       

我尝试修复它,但没有成功:

回溯(最近一次调用最后一次):文件“c:\Users\User\Desktop\tsp server\server\server.py”,第 78 行,在 sftp_client=create_sftp_client(str(client['host']),str(client) ['端口']),str(客户端['用户名']),str(客户端['密码'])) ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 文件“c:\Users\User\Desktop\tsp server\server\ server .py”,第 40 行,create_sftp_client 中 Transport = paramiko.Transport((host, port)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ ^^^ 文件“C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\site-packages\paramiko\transport.py”,第 458 行,init sock.connect((主机名,端口) )类型错误:“str”对象无法解释为整数 **

python
  • 1 个回答
  • 37 Views
Martin Hope
Hit
Asked: 2024-08-04 21:43:35 +0000 UTC

为什么我用 Python 下载 YouTube 视频的程序会抛出错误? [关闭]

  • 3
关闭这个问题是题外话。目前不接受对此问题的答复。

2 天前关闭。

  • 寻求调试帮助的问题(“为什么这段代码不起作用? ”)应包括所需的行为、具体问题或错误,以及直接在问题中重现它的最少代码。没有明确描述问题的问题对于其他访问者来说是没有用的。请参阅如何创建最小的、独立的且可重现的示例。
  • 该问题是由于无法重现或拼写错误造成的。虽然类似的问题可能与本网站相关,但该问题的解决方案不太可能对未来的访问者有帮助。您通常可以通过在发布问题之前编写和研究一个最小的程序来重现问题来避免此类问题。
改进问题
import pytube
import time
import sys
import threading

SAVE_PATH = "download_vidio" 
link = "https://www.youtube.com/watch?v=6JLXHxSXYkA"

def planet_vpn():
    import planet_vpn
    client = planet_vpn.Client()
    ip_data=client.my_ip()
#planet_vpn()
def progres_bar():
    toolbar_width = 55
    sys.stdout.write("[%s]" % (" " * toolbar_width))
    sys.stdout.flush()
    sys.stdout.write("\b" * (toolbar_width+1)) # return to start of line, after '['
    for i in range(toolbar_width):
        time.sleep(0.1) # do real work here
        # update the bar
        sys.stdout.write("-")
        sys.stdout.flush()
    sys.stdout.write("]\n") # this ends the progress bar``
    # пробуем скачать видео по ссылке

def download(link):
    try: 
        youtubelink=pytube.YouTube(link)
        # получаем ссылку на видео с самым высоким качеством
        video=youtubelink.streams.get_highest_resolution()
        # скачиваем видео
        video.download(SAVE_PATH)
        print('скачено')
    # если скачать не получилось
    except:
        # выводим сообщение об ошибке
        print("Ссылка не работает")

if __name__ =="__main__":
    t1 = threading.Thread(target=progres_bar)
    t2 = threading.Thread(target=download, args=(link))

    t1.start()
    t2.start()
    t1.join()
    t2.join()
    print("Done!")

给出错误消息:

[]Exception in thread Thread-2 
(download):
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\threading.py", line 1073, 
in _bootstrap_inner
   self.run()
 File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\threading.py", line 1010, 
in run
    self._target(*self._args, **self._kwargs)
TypeError: download() takes 1 positional argument but 43 were given
-------------------------------------------------------]
Done!
python
  • 1 个回答
  • 41 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5