RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

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

全部问题

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
andreymal
Asked: 2024-09-25 00:57:09 +0000 UTC

如何使图片链接占据所需的最小面积?

  • 7

我有一个先前已知大小的容器,其中有一个链接,其中包含先前未知大小的图像。图片可以比容器大或小。

我想将图像放入容器中 -object-fit: contain这很好用,但问题是可点击的链接保留在边缘周围的空白区域中,因为空白区域被视为图像的一部分,而图像位于链接内部。

是否可以以某种方式调整样式,使链接区域与图像的可见区域完全匹配,并且没有可点击的空间?

在下面的例子中,垂直图像左右的空格是不可点击的,因为我没有设置它width并且图像没有水平拉伸,但是水平图像上方和下方的空格是可点击的,因为我指定了它height: 100%用于拉伸,但是如何在不破坏链接的情况下拉伸图像height,我想不出一个。

愚蠢的替换height: 100%适用max-height: 100%于大图片(缩小到所需的尺寸),但不适用于小图片,因为它们没有理由拉伸。

.image-list {
  margin: 0;
  list-style: none;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: center;
}

/* Тот самый контейнер заранее известного размера */
.image-item {
  width: 652px;
  height: 652px;
  text-align: center;
  margin: 4px;
  background-color: black;
  border: 4px solid #555;
}

/* Размер картинки в общем случае неизвестен */
.image {
  vertical-align: middle;
  max-width: 100%;
  height: 100%;
  object-fit: contain;
}
<ul class="image-list">
  <li class="image-item">
    <a href="#" class="image-link">
      <img src="https://isstatic.askoverflow.dev/4hPGizOL.jpg" class="image">
    </a>
  </li>
  <li class="image-item">
    <a href="#" class="image-link">
      <img src="https://isstatic.askoverflow.dev/gYCiAKHI.jpg" class="image">
    </a>
  </li>
</ul>

css
  • 2 个回答
  • 60 Views
Martin Hope
AVirus
Asked: 2024-09-24 23:07:44 +0000 UTC

存在漏洞的站点列表[关闭]

  • 2
关闭。这个问题无法给出客观的答案。目前不接受对此问题的答复。

想要改进这个问题吗? 重新组织问题,以便可以根据事实和引述来回答。

昨天关门了。

改进问题

我想做一点研究,如果有人有,请给我网站XSS和SQLInjection漏洞。

уязвимости
  • 1 个回答
  • 45 Views
Martin Hope
Rid
Asked: 2024-09-24 21:01:59 +0000 UTC

对仅包含选定元素的数组进行排序

  • 6

挑战是在不影响其他元素位置的情况下对特定元素的数组进行排序。

像这样的问题。

于是就有了存储阵列。

[
    0:{ "Match": "fghfghfgh", "UUID": "a2e0b517-97d6-4050-bcd1-a0dc43a0b276" },
    1:{ "Match": "fghfghfghhhhh", "UUID": "57f03e08-9287-49ba-be4a-d59fa9c4e71c" },
    2:{ "Match": "Попадает под выборку 1", "UUID": "207036a0-48c9-4676-aa21-705a6b7d033a" },
    3:{ "Match": "asdasdasdasd", "UUID": "b448c73d-0232-4a6f-9935-7507afd3fb15" },
    4:{ "Match": "Попадает под выборку 2", "UUID": "bb9af394-0ab0-44f8-9488-a1ecbb10be75" },
    5:{ "Match": "Попадает под выборку 3", "UUID": "ef519c5c-83b8-4fb8-996b-de881a9123dd" },
    6:{ "Match": "5555", "UUID": "e089ce64-2774-49b1-ade9-ddc185bf9236" },
    7:{ "Match": "Попадает под выборку 4", "UUID": "ba789aab-2eee-4ae9-8fed-d571f76ab2fd" }
]

每个元素都有唯一的UUID值,Match选择元素(2,4,5,7)并将它们加载到DOM中

<div id="Selections">
    <div uuid="207036a0-48c9-4676-aa21-705a6b7d033a"></div>//storage[2] - 1
    <div uuid="bb9af394-0ab0-44f8-9488-a1ecbb10be75"></div>//storage[4] - 2
    <div uuid="ef519c5c-83b8-4fb8-996b-de881a9123dd"></div>//storage[5] - 3
    <div uuid="ba789aab-2eee-4ae9-8fed-d571f76ab2fd"></div>//storage[7] - 4
</div>

操作DOM(dragstart/dragover/dragend)后,它们的位置发生了变化。

<div id="Selections">
    <div uuid="207036a0-48c9-4676-aa21-705a6b7d033a"></div>// - 1
    <div uuid="ba789aab-2eee-4ae9-8fed-d571f76ab2fd"></div>// - 4
    <div uuid="bb9af394-0ab0-44f8-9488-a1ecbb10be75"></div>// - 2
    <div uuid="ef519c5c-83b8-4fb8-996b-de881a9123dd"></div>// - 3
</div>

结果,数组应如下所示:

[
    0:{ "Match": "fghfghfgh", "UUID": "a2e0b517-97d6-4050-bcd1-a0dc43a0b276" },
    1:{ "Match": "fghfghfghhhhh", "UUID": "57f03e08-9287-49ba-be4a-d59fa9c4e71c" },
    2:{ "Match": "Попадает под выборку 1", "UUID": "207036a0-48c9-4676-aa21-705a6b7d033a" },
    3:{ "Match": "asdasdasdasd", "UUID": "b448c73d-0232-4a6f-9935-7507afd3fb15" },
    4:{ "Match": "Попадает под выборку 4", "UUID": "ba789aab-2eee-4ae9-8fed-d571f76ab2fd" },
    5:{ "Match": "Попадает под выборку 2", "UUID": "bb9af394-0ab0-44f8-9488-a1ecbb10be75" },
    6:{ "Match": "5555", "UUID": "e089ce64-2774-49b1-ade9-ddc185bf9236" },
    7:{ "Match": "Попадает под выборку 3", "UUID": "ef519c5c-83b8-4fb8-996b-de881a9123dd" }
]

正如您所看到的,未包含在选择中的元素 0,1,3,6 保留在其位置,并且所选元素根据DOM中的新位置交换位置。

想到的唯一解决方案:

let uuids = Array.prototype.map.call(Selections.children, i => i.getAttribute("uuid"));// Получаем массив uuid`ов из DOM в соответствии с их положением
let storage = await Storage.getValue("Includes");// Получаем наш массив storage

let newArray = new Array(storage.length);//Создаём новый массив равный storage для сортировки
let i = 0;//Переменная соответствующая положению элемента
storage.forEach((v, k) => {//Перебираем наш массив
    if (uuids.includes(v.UUID)) {//Если элемент имеется в нашей выборке
        newArray[k] = storage.find(e => e.UUID == uuids[i]);//Ищет элемент в исходном массиве и задаёт ему новую позицию в соответствии сортировки uuids
        i++;//Переходим к следующему элементу выборки
    } else {
        newArray[k] = v;// Оставляем элемент на прежнем месте
    }
});

await Storage.setValue("Includes", newArray);//Сохраняем массив

有谁遇到过这个问题吗?

javascript
  • 2 个回答
  • 98 Views
Martin Hope
Вадим Мотеюнас
Asked: 2024-09-24 20:39:09 +0000 UTC

pandas 按条件添加行

  • 5

您需要向数据框中添加行,如果价格列中的值差异大于 1,则在新行中写入“缺失”价格(即价格步长应该为 1)。用零填充剩余的单元格。我解决了这个问题,但在我看来应该有一种更优雅的方式:

def new_price(x): # Ф-ция получает построчно значения из price и diff_pr
    if x.iloc[0] > 1: # Если разница между ценами больше 1
        incr = 1
        for i in range(x.iloc[0] - 1): # Количество строк которые нужно добавить из ходя из разницы между price
            df.loc[len(df)] = [0, x.iloc[1] + incr, 0] # Обращаемся к price на строке в которой найдена разница более 1
            incr += 1                                  # Добавляем новую строку где price +1


df = pd.DataFrame({'vol': [2, 3, 8], 'price': [5, 3, 10]}).sort_values(by='price', ascending=False)
df['diff_pr'] = df['price'].diff().fillna(0).abs().astype('int')
df[['diff_pr', 'price']].apply(new_price, axis=1)
df = df.sort_values(by='price', ascending=False)
print(df)

回答:

   vol  price  diff_pr
2    8     10        0
6    0      9        0
5    0      8        0
4    0      7        0
3    0      6        0
0    2      5        5
7    0      4        0
1    3      3        2
python
  • 2 个回答
  • 34 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