Мы уже упоминали, как мы предоставляем бесплатные VPS для студентов, чтобы они учились программировать. Один из наших подопечных Павел сделал простеньких телеграм и ВК ботов для FAQ. Они очень простые, тем не менее, начинающему программисту не помешают комментарии опытных ребят — поэтому публикуем его рассказ — Павел будет рад, если в комментариях ему дадут советы.
Я — студент Новосибирского Государственного Технического Университета, не так давно мы с парочкой моих друзей реализовали площадку для продвижения проектов во всех возможных областях научной деятельности. Мы помогаем «сводить» заинтересованных преподавателей и студентов всех ВУЗов Сибири, чтобы проектная научная деятельность развивалась по территории Сибири и РФ.
Студенты и преподаватели часто обращались ко мне с вопросами и я решил автоматизировать этот процесс, написав ботов для ВК и Телеграм.
На вход они принимают сообщения, а на выходе выдают либо текстовый ответ, либо специальную структуру данных, замаскированное под сообщение: инлайновые или висячие клавиатуры.
Я использовал Python версии 3.6 просто потому, что он самый простой для меня. Кодил в PyCharm Community Edition. Весь код опубликован на GitHub. Удачи!
1. Предварительные приготовления для телеграм-бота
1.1 Получение токена от BotFather в телеграмме
Первым делом, нам нужно «зарегистрировать» нашего бота в Telegram.
Для этого, в поисковике телеги ищем BotFather
далее, делаем всё также, как на скриншотах:
После нажимаем на команду /newbot
или же прописываем вручную.
Надо придумать уникальное имя для бота, придумываем и получаем соответствующий токен.
1.2 Переходим в любой редактор кода и создаем файл config.py
Перед созданием данного файла, нам нужно выбрать директорию, в которой будет реализован весь функционал бота. Если вы используете PyCharm Community/Professional Edition, то предлагаю просто создать новый проект, и писать там весь функционал бота.
Если Вы используете любой другой редактор, такой как Sublime Text 3, например, то Вам самостоятельно придётся создать директорию, создать виртуальное окружение, и работать из консоли со всеми предварительными тестами. Во избежание трудностей, предлагаю скачать продукт PyCharm Community Edition от компании JetBrains, с помощью данного продукта можно обойти действия, описанные в предыдущем абзаце, так как данный продукт сделает их самостоятельно, от Вас потребуется только указать путь до интерпретатора Python в конфигурациях PyCharm, с помощью которого и будет работать Ваш бот.
В данном файле (config.py) будет храниться только токен, который нам дал BotFather, поэтому пишем:
token = "Здесь хранится Ваш токен".
1.3 Cоздаём главный файл — bot.py
Делаем cледующие импорты и для соответствующих библиотек, в консоли прописываем закоментированные строчки:
import config
import telebot # pip install telebot
from telebot import types # pip install pyTelegramBotAPI
Далее, нам необходимо использовать наш токен:
bot = telebot.TeleBot(config.token)
Этими действиям мы устанавливаем то, что мы будем накручивать функционал именно для того бота, для которого нам и дал токен BotFather.
2. Разворачиваем функционал
Начнём с того, что для того, чтобы пользователю запустить бота, нам необходимо прописать команды для старта они могут быть разными, например, /start
или /go
и вообще любыми, какие Вы сочтёте нужными.
Для обработки команд нам потребуется message_handler
, с помощью которого и будет реализован весь функционал обработки команд для старта и завершения, если Вы сочтёте нужным добавить завершение. Как только придёт команда /go
или /start
, message_handler
с соответствующими командами сравнит, совпадают ли строки и если совпадают, то обработает соответствующей функцией.
Каждая функция, как и в примере сейчас, должна принимать один параметр — сообщение от пользователя, которое будет обработано соответствующей функции «в обёртке» декоратора. А также, каждая функция (или связка функций) должна возвращать соответсвующее сообщение от бота.
Итак:
@bot.message_handler(commands=['go', 'start']) # Обработка команды для старта
def welcome(message):
sti = open(path+'stiker.tgs', 'rb')
bot.send_sticker(message.chat.id, sti)
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item3 = types.KeyboardButton("Приложения")
item2 = types.KeyboardButton("Мероприятия")
item1 = types.KeyboardButton('О нас')
markup.add(item1, item2, item3)
bot.send_message(message.chat.id,
"Добро пожаловать, {0.first_name}!nnЯ - <b>{1.first_name}</b>, бот команды Projector в НГТУ, "
"создан для того, "
"чтобы помочь Вам влиться в нашу команду,"
"просто узнать что-то о нас или же просто пообщаться и весело провести время.nn"
"<i>Have a nice time</i>".format(
message.from_user, bot.get_me()),
parse_mode='html', reply_markup=markup)
В этой функции реализовано сразу два действия: отправка приветственного сообщения и создание встроенной клавиатуры — ReplyKeyboardMarkup
, которая будет открыта, пока мы не завершим выполнения бота соответсвующей командой. Об этом будет сказано ниже.
Итак, пройдёмся по строчкам:
В строках 20-21: открывается стикер по тому пути к директории, в которой я его сохранил, после чего отправляется.
Строки 22-28: создаем встроенную клавиатуру, добавляя туда три элемента.
Строки 30-37: описано создание и отправка приветственного сообщения
Как вы можете заметить, метод send_message
в строке 30, позволяет использовать HTML, для форматирования текста.
Строками ниже, добавим запуск самого бота, который будет хоститься, пока не случится ошибка или же, пока мы Сами его не закроем.
# RUN
if __name__ == "__main__":
try:
bot.polling(none_stop=True)
except ConnectionError as e:
print('Ошибка соединения: ', e)
except Exception as r:
print("Непридвиденная ошибка: ", r)
finally:
print("Здесь всё закончилось")
Сделаем первый запуск! Для этого, в PyCharm-е нажмём зеленую кнопку старт в правом верхнем углу или же, можно запустить из консоли командой: python bot.py
Результат первого запуска:
2.1 Обработка нажатия на кнопки и создание inline keyboard
Так как любое сообщение — это текст, то мы будем обрабатывать именно текстовые сообщения.
Сделаем следующее и аналогично разберём по строчкам:
@bot.message_handler(content_types=["text"])
def go_send_messages(message):
if message.chat.type == 'private':
if message.text == 'Приложения':
keyboard = types.InlineKeyboardMarkup(row_width=1)
itemboo = types.InlineKeyboardButton(text="Тыщ на кнопку и ты уже в Google", url="<https://www.google.ru>")
itemboo1 = types.InlineKeyboardButton('Рандомное число', callback_data='good2')
itemboo2 = types.InlineKeyboardButton("Калькулятор", callback_data='bad2')
itemboo3 = types.InlineKeyboardButton("Хочу узнать погоду в моем городе/стране", callback_data='good3')
itemboo4 = types.InlineKeyboardButton("Как твои дела?", callback_data='bad4')
keyboard.add(itemboo, itemboo1, itemboo2, itemboo3, itemboo4)
bot.send_message(message.chat.id,
"{0.first_name}, окей, смотри, что у нас есть тут:n".format(message.from_user),
reply_markup=keyboard)
elif message.text == "Мероприятия":
one_markup = types.InlineKeyboardMarkup(row_width=1)
ite1 = types.InlineKeyboardButton("Ближайшие мероприятия", callback_data="one")
ite2 = types.InlineKeyboardButton("Проведенные мероприятия", callback_data="two")
ite3 = types.InlineKeyboardButton("Волонтерство на мероприятие", callback_data="three")
ite4 = types.InlineKeyboardButton("Действующие проекты в НГТУ", callback_data="fourth")
ite5 = types.InlineKeyboardButton("Мероприятия Межвузовского центра", callback_data="five")
one_markup.add(ite1, ite2, ite3, ite4, ite5)
bot.send_message(message.chat.id, "{0.first_name}, у нас <u>ежемесячно</u> проводится множество "
"мероприятий,nмы постарались разбить их на следующие составляющие:".format(
message.from_user), parse_mode="html", reply_markup=one_markup)
Строка 339 — обработчик любых текстовых сообщений
Строка 341 предназначена для того, чтобы сказать, что если данное сообщение предназначено боту, то сравни эту строку с теми, что здесь обрабатываются и отправь ответ.
Строки 344 — 351 — создаём инлайновую клавиатуру InlineKeyboardMarkup и помещаем в эту клавиатуру 5 элементов, которые также можно будет обработать по установленной callback_data
. Элементы данной клавиатуры будут расположены друг под другом, так как в строке 344, мы установили row_width = 1
, что обозначает самую широкую грань одной кнопки, поэтому они и будут расположены друг под другом.
Строки 353-355 — отправляют текст, вместе с нашей Inline Keyboard.
В условиях ниже представлены аналогичные представления обработки сообщений.
Итак, сделаем запуск:
2.2 Обработка InlineKeyboardButton
Как было сказано выше, каждый элемент InlineKeyboardButton
имеет параметр callback_data
, и именно по этим параметрам будет обрабатываться каждая кнопка. Для этого нам потребуется обработчик инлайновой клавиатуры callback_query_handler
.
@bot.callback_query_handler(func=lambda call: call.data in ['one', 'two', 'three', 'fourth', 'five']) # Мероприятия
def callback_inline_one(call):
try:
if call.message:
if call.data == 'one': # Ближайшие мероприятия
bot.send_message(call.message.chat.id,
"Итак,<b>ближайшие мероприятия</b>:nn" # Здесь будут ссылки ещё
"Форум «Байкал»n"
"Конкурс «Цифровой ветер»n"
"PRONETI", parse_mode="html")
elif call.data == 'two': # Проведённые мероприятия
bot.send_message(call.message.chat.id, "Вот список <b>проведённых мероприятий</b>:nn"
"МНТКn"
"Семинары по проектной деятельностиn"
"Встреча с представителями предприятий", parse_mode="html")
elif call.data == 'three':
Итак, разберём построчно:
Строка 269 — объявляем обработчик, который будет обрабатывать каждую из нажатых кнопок с использованием лямбда-функции
Строки 273-278 — В данном блоке if, мы просто обрабатываем сообщение и отправляем сообщение пользователю.
Строки 279-283 — Делают аналогичное действие, что и в предыдущем условном блоке.
и т. д.
Также, в данных блоках можно определить аналогичную инлайновую клавиатуру, только тогда придётся создать ещё один обработчик callback_data
, аналогичный обработчику callback_query_handler
, показанный на скриншоте выше.
Результат:
Так просто и обрабатываются inline keyboards.
3. Завершаем работу бота
Данная функция будет аналогичной функции обработки команд для старта бота, поэтому Вы сможете легко понять её функционал:
@bot.message_handler(commands=['stop']) # Обработка команды для выхода
def bye(message):
bye_Sti = open(path+'byeMorty.tgs', 'rb')
hideBoard = types.ReplyKeyboardRemove()
bot.send_message(message.chat.id,
"Досвидания, {0.first_name}!nМы, команда <b>{1.first_name}</b>, надеемся, что ты хорошо провел(а) время nn"
"Присоединяйся к нашей команде в <a href='<https://vk.com/projector_neti>'>vk</a>n"
"Наш <a href='<https://instagram.com/projector_neti>'>inst</a>nn"
"Напиши Координатору проектов (<a href='<https://vk.com/nikyats>'>Никите Яцию</a>) и задай интересующие тебя вопросы по <i>проектной деятельности</i>nn"
"Надеемся, что тебе ответят очень скоро nn"
"<u>Don't be ill and have a nice day</u> nnn"
"P.S.: Если есть какие-то пожелания или вопросы по боту, то напиши <a href='<https://vk.com/setmyaddresspls>'>мне</a>".format(
message.from_user, bot.get_me()), parse_mode='html', reply_markup=hideBoard)
exit()
Здесь происходит следующее:
- Отправляется прощальный стикер.
- Закрывается встроенная клавиатура (строка 44).
- Отправляется прощальное сообщение.
Так как мы используем bot.polling
, с параметром none_stop = True
, то пользователь может снова вознообновить общение с ботом при помощи команды /start
или /go
, обработка которых показано в пункте выше.
Результат:
ВК БОТ
Перейдём к реализации бота Вконтакте, написанном на том же родном языке Python, его основное отличие от предыдущего в том, что он был написан с использованием ООП, а именно класса. Внешне, он выполняет ту же миссию. Сама библиотека для написания вк бота намного проще телеграмм бота, поэтому разобраться в ней самостоятельно не составит большого труда. Итак, начнём.
1. Предварительные подготовления
Установим следующие библиотеки по тем же технологиям:
import vk_api # pip install vk-api
import json # pip install json
from vk_api.longpoll import VkLongPoll, VkEventType
▍1.1 Получение токена для сообщества Вконтакте.
- На главной странице сообщества найти раздел «Управление»
- Работа с API
- Создать ключ. Выбираете нужные для вас пункты, которые будут доступны боту.
В итоге должно получиться примерно следующее:
Берем ключ и переходим в среду разработки и делаем следующее:
vk = vk_api.VkApi(token=
"Ваш_токен")
Далее — следующее:
longpoll = VkLongPoll(vk)
На этом, закончим подготавления.
2. Разворачиваем функционал
Первым делом создадим файл manage.py
Cоздадим прототип встроенной клавиатуры ( всё с помощью документации VkBotAPI ).
main_keyboard = {
"one_time": False,
"buttons": [
[{
"action": {
"type": "text",
"payload": "{"button": "1"}",
"label": "О нас"
},
"color": "positive"
}],
[{
"action": {
"type": "text",
"payload": "{"button": "2"}",
"label": "Мероприятия"
},
"color": "positive"
},
{
"action": {
"type": "text",
"payload": "{"button": "3"}",
"label": "Приложения"
},
"color": "positive"
}
],
[{
"action": {
"type": "text",
"payload": "{"button": "4"}",
"label": "Контакты"
},
"color": "primary"
}]
]
}
Затем переводим её в формат json, как требуется в документации:
main_keyboard = json.dumps(main_keyboard, ensure_ascii=False).encode('utf-8')
main_keyboard = str(main_keyboard.decode('utf-8'))
Пример инлайн клавиатуры:
about_us_keyboard = {
"inline": True,
"buttons": [
[{
"action": {
"type": "text",
"payload": "{"button": "1"}",
"label": "Основная информация"
},
"color": "positive"
}],
[{
"action": {
"type": "text",
"payload": "{"button": "2"}",
"label": "Чем мы занимаемся ?"
},
"color": "primary"
},
{
"action": {
"type": "text",
"payload": "{"button": "3"}",
"label": "Где мы находимся ?",
},
"color": "positive"
}],
[{
"action": {
"type": "text",
"payload": "{"button": "4"}",
"label": "Как попасть в команду ?",
},
"color": "primary"
}],
[{
"action": {
"type": "text",
"payload": "{"button": "5"}",
"label": "Контакты",
},
"color": "secondary"
}],
[{
"action": {
"type": "text",
"payload": "{"button": "6"}",
"label": "Задать вопрос руководителю проекта",
},
"color": "negative"
}]
],
}
Не забываем все используемые клавиатуры переводить в формат json:
about_us_keyboard = json.dumps(about_us_keyboard, ensure_ascii=False).encode('utf-8')
about_us_keyboard = str(about_us_keyboard.decode('utf-8'))
Создадим функцию write_msg
, для того, чтобы не мучиться с постоянной отправкой сообщений от бота:
def write_msg(user_id, message, key):
vk.method('messages.send',
{'user_id': user_id,
'message': message,
'keyboard': key,
'random_id': random.randint(0, 2048)})
После создания всех прототипов, мы можем перейти к следующему шагу. ( к этому файлу мы позже вернёмся и доработаем обработку общения пользователя и нашего vk-бота )
▍2.1 Основной функционал (создаем файл vk_bot.py)
Мы не будем разрабатывать методы, которые будут выполнять, например, функцию парсинга времени или погоды, назовем их второстепенными. Я покажу лишь основной метод, который будет обращаться к этим второстепенным методам, для обработки тех или иных сообщений от пользователя. В конце статьи я выложу ссылку на свой GitHub, где Вы сможете самостоятельно просмотреть интересующий Вас функционал любого из метода. Итак:
Конструктор класса:
class VkBot:
def __init__(self, user_id):
self.USER_ID = user_id
self._USERNAME = self._get_user_name_from_vk_id(user_id)
self.my_str = ""
self._COMMANDS = ["привет", "погода", "время", "пока"]
self._inputMes = {"основная информация": answers.about_us1,
"чем мы занимаемся ?": answers.about_us2,
"где мы находимся ?": answers.about_us3,
"ближайшие мероприятия": answers.events1,
"проведённые мероприятия": answers.events2,
"волонтёрство на мероприятие": answers.events3,
"действующие проекты в нгту": answers.events4,
"мероприятия межвузовского центра": answers.events5
}
Последнее свойство класса — inputMes
— это особый словарь, у которого значения ключей — это текст из файла answers.py, где я расположил текст в виде строк, поэтому, чтобы не загромождать код я и вынес основной текст в другой файл.
(Пример кода из файла answers.py)
events1 = "Итак,ближайшие мероприятия:nn"
"Форум «Байкал»n"
"Конкурс «Цифровой ветер»n"
"PRONETI"
events2 = "Вот список проведенных мероприятий:n"
"МНТКn"
"Семинары по проектной деятельностиn"
"Встреча с представителями предприятийn"
events3 = "По поводу этого критерия напиши Илье (<https://vk.com/ki1337ki>)n"
"А также, ты можешь заполнить анкету, благодаря которой,n"
"с тобой лично свяжется один из руководителей направленияn"
"или координатор проекта (<https://vk.com/nikyats>)"
Итак, основной метод класса — это new_message
, который принимает один параметр — message
, который обрабатывается соответствующим условным блоком и возвращает какое -то значение обратно туда, откуда был вызван.
def _get_user_name_from_vk_id(self, user_id):
request = requests.get("<https://vk.com/id>" + str(user_id))
bs = bs4.BeautifulSoup(request.text, "html.parser")
user_name = self._clean_all_tag_from_str(bs.findAll("title")[0])
return user_name.split()[0]
def new_message(self, message):
# self.my_str = " ".join(re.findall('[0-9]{2}', message))
if message.lower() == self._COMMANDS[0]:
return f"Привет, {self._USERNAME}!"
elif message.lower() == self._COMMANDS[1] or message.lower() == "узнать погоду ":
return self._get_weather()
elif message.lower() == self._COMMANDS[2] or message.lower() == "узнать точное время ":
return self._get_time()
elif message.lower() == self._COMMANDS[3]:
return f"До скорой встречи, {self._USERNAME}!"
else:
for key, value in self._inputMes.items():
if message.lower() == key:
return value
return "Не понимаю тебя "
3. Возвращаемся в manage.py и дописываем функционал
Теперь в первых строках нам необходимо проимпортить файл vk_bot. А также нам потребуется библиотека random.
import random # pip install random
from vk_bot import VkBot
После того, как мы объявили longpoll, дописываем основной функционал.
longpoll = VkLongPoll(vk)
try:
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW:
if event.to_me:
bot = VkBot(event.user_id)
if event.text.lower() == "о нас":
write_msg(event.user_id, "Немного о нашем проекте", about_us_keyboard)
elif event.text.lower() == "мероприятия":
write_msg(event.user_id, "Что ты хочешь узнать?", events_keyboard)
elif event.text.lower() == "приложения":
write_msg(event.user_id, "Посмотри, что есть здесь!", app_keyboard)
elif event.text.lower() == "контакты":
write_msg(event.user_id, "По любым вопросам можешь обращаться к:", contacts_keyboard)
elif event.text.lower() == "задать вопрос руководителю проекта":
write_msg(event.user_id, "У тебя есть возможность написать сообщение нашему Руководителю проекта",
go_answer)
elif event.text.lower() == "калькулятор":
write_msg(event.user_id, "В разработке...", calc_keyboard)
# elif event.text == " ".join(re.findall('d{2}', event.text)):
# write_msg(event.user_id, "Отлично, мы здесь", calc_keyboard)
elif event.text.lower() == "как попасть в команду ?":
write_msg(event.user_id, "Напиши координатору проекта - Никитеn"
"или перейди на сайт проектной деятельности,n"
"найди проект номер 612 и подай заявку", in_team)
else:
write_msg(event.user_id, bot.new_message(event.text), main_keyboard)
except Exception as e:
print(e)
Как можете заметить, в условных блоках if и elif — присутствует обработка тех сообщений, которые подразумевают под собой вывод инлайн или встроенной клавиатуры (в данном примере — выводятся только инлайн клавиатуры). Сюда также можно добавить более сложные обработки сообщений, после которых обработка будет метаться туда сюда по блокам if и elif. Таким образом бот будет работать, пока не «упадёт с ошибкой».
Другое дело обстоит с блоком else, здесь мы обращаемся как раз ко классу нашего Бота, после чего он аналогичным способом находит обработку сообщения и выводит результат. Это можно назвать вложенной обработкой, а так как вложенностей лучше избегать, то лучше использовать тот метод программирования бота, который как раз-таки реализован в телеграмм боте.
Заключение
Надеюсь, что после прочтения данной статьи, Вы как минимум поняли основной принцип создания своего Telegram или Vk бота, а как максимум — легко сможете написать своего бота.
Как вы можете видеть, создать его функционал очень просто, особенно, если вы знаете основы языка Python.
Весь код опубликован в моём профиле GitHub:
- Телеграм Бот
- Бот Вконтакте
Тема: Глагол «болеть» в спортивном смысле (Прочитано 10070 раз)
0 Пользователей и 1 Гость просматривают эту тему.
Всего найдено: 15
Добрый день! Возник вопрос по поводу употребления слова «шанс» применительно к негативным событиям: шанс заболеть раком, шанс заразиться инфекцией, шанс на развитие осложнений. Речь идет о статьях медицинского плана. Мне казалось, что слово «шанс» имеет позитивную окраску, должно использоваться в контексте надежды на лучшее развитие событий. Так же, как в обычной жизни мы говорим про шансы на успех, шансы на выживание. И выражение «шансы на развитие злокачественной опухоли» звучит как-то неестественно. Коллега со мной не согласна. Подскажите, пожалуйста, я не права? Спасибо!
Ответ справочной службы русского языка
Основное значение слова шанс, фиксируемое словарями, — «возможность осуществления чего-либо, вероятность успеха, удачи». При этом указанное вами значение — «вероятность» — может быть результатом калькированного употребления англ. chance. Указанные Вами случаи употребления можно считать разговорными.
Добрый день! Нужно ли заключать в кавычки слово «поболеть» в значении «поболеть за любимую команду»? Спасибо
Ответ справочной службы русского языка
Использовать кавычки нет необходимости.
Может ли болеть голова, ведь голова — это кость. Получается, правильно говорить: болят мозги?
А если кружится голова, то кружатся мозги?
Заранее спасибо.
Ответ справочной службы русского языка
По-русски говорят: болит голова, кружится голова. (Кстати, утверждают, что собственно мозг болеть не может, т. к. в мозгу нет болевых окончаний.)
Разочарование и негодование от нашей игры с греками постепенно рассасывается. И вспоминается вопрос, который давно хотелось задать. Что такое ТОРСИДА? Откуда появилось это слово? У Тимура Шаова в одной из его песен есть такая строчка: «торсида ли поёт, иль бабы на току…». Может ли торсида петь? Заранее благодарен за полный ответ.
Ответ справочной службы русского языка
Интересный вопрос. Слово торсида известными нам толковыми словарями русского языка пока не фиксируется, хотя используется достаточно давно. Это слово обозначает футбольных болельщиков, фанатов и употребляется как собирательное существительное (ср.: листва, студенчество), напр.: на трибунах беснуется спартаковская торсида. Торсида, безусловно, может петь (и лучше пусть поет, а не бросает на поле посторонние предметы или скандирует неприличные кричалки).
Слово это пришло к нам, по всей вероятности, из испанского или португальского языка и связано с глаголом torcer (ср. англ. torsade ‘витой шнурок’, восходящее – через французское посредство – к тому же латинскому корню). У португальского глагола torcer словари фиксируют несколько значений: прямое значение ‘скручивать, сгибать, крутить’ и несколько переносных, в том числе – ‘спорт. болеть‘. Как ‘крутить’ стало означать ‘болеть‘? Одна из версий связывает такое развитие значения с наблюдением репортера, заметившего, как девушка на трибуне нервно скручивала перчатки, переживая из-за происходящего на поле (подробнее эта версия изложена здесь). Можно также предположить, что развитие значения от ‘крутить’ до ‘болеть‘ шло аналогично русскому языку: переживания человека, остро реагирующего на ход состязания, сравниваются с физическими страданиями (т. е. человека «скручивает» из-за происходящего на поле).
Наконец, не лишена правдоподобия еще одна версия происхождения слова торсида. По-испански и по-португальски torcida – ‘фитиль’. Могло ли на базе прямого значения ‘фитиль’ развиться переносное значение ‘болельщики’? Учитывая, как болельщики «зажигают» на трибунах, – вполне возможно.
Уважаемая ГРАМОТА!
1) Насколько я понимаю, все названия, употребляемые с родовым понятием, берутся в кавычки (например, поэма «Евгений Онегин», ГУП «Мосводоканал», магазин «Свет» и т. д.).
Названия, употребляемые без родового понятия, но обладающие ярко выраженной образностью, символическим значением, тоже всегда берутся в кавычки (слушать «Кино» (рок-группу), болеть за «Локомотив» (футбольный клуб), работать в «Просвещении» (издательстве) и т. д.).
Пожалуйста, напишите, берутся ли в кавычки названия, употребляемые без родового понятия (включающие его в себя) и не обладающие образностью. Например:
1) работать в _Министерстве финансов РФ_, _Библиотеке иностранной литературы_, _Первой образцовой типографии_;
2) читать _Повесть о Шемякином суде_, _Сказку о попе и его работнике Балде_, _Житие Сергия Радонежского_;
3) выступление _Ансамбля песни и пляски_, _Хора Турецкого_;
4) решение смотрите в _Ответах_, _Комментариях_ (имеются в виду разделы книги);
5) в продажу поступили: _Средство от накипи_, _Бальзам для волос_, _Крем после бритья_ (приведены названия конкретных товаров).
Где можно прочесть современные правила употребления кавычек?2) Все ли слова в названиях или только первое надо писать с большой буквы (например, Ансамбль П/песни и П/пляски, Библиотека И/иностранной Л/литературы, Сказка о П/попе… и т. д.?
Ответ справочной службы русского языка
Пожалуйста, обратитесь к материалам рубрики «Письмовник» на нашем портале:
Как объяснить человеку, почему в слове «неплатЕльщики» Е?
Ответ справочной службы русского языка
Слово плательщик образовано от глагола платить с помощью суффикса —льщик. В подавляющем большинстве случаев конечная гласная основы инфинитива сохраняется перед этим суффиксом: болеть – болельщик, вязать – вязальщик, носить – носильщик. Однако в некоторых словах происходит изменение гласных (говоря сухим научным языком – мена гласных финалей исходной основы), при этом в двух словах – образованиях от глаголов платить и молиться – происходит мена И – Е: платить – плательщик, молиться – молельщик. Таковы хитросплетения русской грамматики.
«душа может болеть в самом конкретном, медицинском(,) смысле» нужна запятая? спасибо
Ответ справочной службы русского языка
Указанная запятая не требуется.
Вопрос № 223429
Следуй советам врача(,) и будешь меньше болеть. Спасибо!
——
Ответ справочной службы русского языка
Нужно поставить запятую или тире.
?Зачем здесь запятая, разве это не два однородных сказуемых?
Ответ справочной службы русского языка
Это сложное предложение.
Следуй советам врача(,) и будешь меньше болеть. Спасибо!
Ответ справочной службы русского языка
Нужно поставить запятую или тире.
За сезон простуд каждый из нас вполне имеет шанс заболетьОРВИ не один и не два раза. Не или НИ? Спасибо
Ответ справочной службы русского языка
Правильно с _не_.
Здравствуйте!
Расскажите, пожалуйста, каково происхождение слов «голод», «голодать»?
Спасибо.
Петр.
Ответ справочной службы русского языка
Слово _голод_ — общеславянское. Скорее всего, это суффиксальное производное от той же основы, что и gelti «болеть, жалить». Первоначальное значание — «колющая боль» (от голода), затем — «чувство голода, голод».
болеть за наших будет или будут тысяча болельщиков ? Спасибо.
Ответ справочной службы русского языка
Предпочтительно: _…будет тысяча болельщиков_.
Подскажите, пожалуйста, можно сказать » болеть за футбольное соревнование» или » болеть за футбол»? Спасибо за ответ.
Ответ справочной службы русского языка
Правильно: _болеть за команду на футбольном соревновании_. Сочетание _болеть за футбол_ имеет значение «беспокоиться о развитии футбола как вида спорта».
Здравствуйте!
С начала ЧМ по футболу мне не даёт покоя слово «болельщик» — как оно возникло? Т.е. я, конечно, понимаю смысл, но меня интересует, есть ли какие-либо параллели у этого русского слова с другими языками? Возможно ли, что это калька?Заранее очень благодарна!
Лена Штайнметц
Ответ справочной службы русского языка
Слово _болельщик_ образовано от глагола _болеть_ в переносном значении, развившемся на базе прямого — «испытывать боль». Раньше слово _болельщик_ нередко употреблялось и в значении «о том, кто проявляет участие, заинтересованность в каком-то деле, заботится, беспокоится о нем». Вот пример из Л. Успенского: _В России его_ [Уэллса] _слышат и понимают… как великого болельщика за будущее человечества_. Сам же глагол _болеть_ восходит к индоевропейской основе.
Интересно, что существительное _фанат_ восходит к латинскому fanari — «безумствовать, бесноваться». А итальянское _тифози_ того же корня, что _тифозный_. Слово _тиф_ — от греческого typhos — «дым, помрачение, горячка, бред».
Верна ли пунктуация: «Хотя болеть исландцы, как и европейцы и американцы, не любят»?
Ответ справочной службы русского языка
корректно: _Хотя болеть исландцы, как и европейцы, и американцы, не любят_.
1.
… Все заслонилось передрягой. Изгладилось, как, поболев, «Ты прав!» — Bскричал матрос с «Варяга», Георгиевский кавалер. Как, дважды …
Пастернак Б.. Стихи и поэмы
2.
… первого урока, чтобы они могли поболеть за участников. Прикрываясь рукой от солнца, Кара Уокер внимательно смотрела …
Паскаль Френсис. Школа в ласковой долине
3.
… за нас. Очень часто желающих поболеть за нас собиралось больше, чем самих игроков. А уж недостатка …
Орр Бобби. Моя игра
4.
… его, — все время пел молебны. Поболел только три дня, ежедневно я причащал его; утром причастил, а …
Письма старца Валаамского монастыря
5.
… стелить себе постель. Она вознамерилась поболеть подольше и в свое удовольствие, потому постелила чистые простыни и …
Первик Айно. Чаромова
6.
… знаю. Переезжайте. Довольно вам валяться. Поболели и ладно. Пора подыматься. Перемените комнату, займитесь предметами, кончайте курсы …
Пастернак Борис. Доктор Живаго
7.
… же знаку. Он позволил мне поболеть самомнением, поверить, что без меня рухнет мир, а затем оставил …
Окуджава Булат. Свидание с Бонапартом
8.
… что ж, теперь пускай немного поболеет, подлечится, а мы уж как-нибудь без нее справимся! Эта …
Огарев Михаил. Авантюрное танго 1-2
9.
… тоже умер. Врача не вызвали, поболел три дня и помер. Слава не улавливает связи между этими …
Овалов Лев Сергеевич. Двадцатые годы
10.
… что можно и о Родине поболеть, потом будет некогда. Ловчий умолк, только плямкал беззубым ртом и … только тогда исчез! А Бартек поболел, но выжил. И сейчас такой здоровый, что подковы гнет. Он …
Орловский Гай Юлий. Ричард Длинные руки 1-4
11.
… он чаще всего обязан себе. Поболеет, поболеет от радиаций и химии, а потом они будут для него …
Орлов Владимир. Останкинские истории 1-2
12.
… он чаще всего обязан себе. Поболеет, поболеет от радиаций и химии, а потом они будут для него …
Орлов Владимир. Альтист Данилов
13.
… глубину в водоупор. — Козлов пускай поболеет,— сказал Чиклин, прибыв обратно.— Мы тут рыть далее не будем …
Платонов Андрей. Котлован
14.
… ответил. — Иногда даже приятно немного поболеть. Покой, уединение, -продолжал Крис, пытаясь завязать неклеящийся разговор. — Хотя я …
Романов Андрей. Планета обетованная
15.
… обсудим. И вообще, дал бы поболеть, что ли… — Извини, Вадим. Я постараюсь выбрать время и подъехать …
Романенко Владимир. Год белой кометы
16.
… А я за тебя приду поболеть. — Спирт на свежем воздухе действовал стремительно, и улыбка на Женином …
Разумовский Феликс. Нелегкий флирт с удачей
17.
… Замок действительно заедал. Валдаеву пришлось поболеть ключ в гнезде из стороны в сторону. Наконец ключ со …
Рясной Илья. Пятая жертва
18.
… помолчать о своих проблемах? Подумаешь, поболело три секунды, что же, сразу жаловаться?… Почему у него не … таких людей, которые приехали бы поболеть за него, когда он будет рисковать жизнью. Он уже собирался … ним. — Мы решили приехать и поболеть за тебя, Гарри! — Она наклонилась и поцеловала его в щ … Что вы здесь делаете? — Приехали поболеть за Гарри! — энергично ответила миссис Уэсли. — Между прочим, должна сказать …
Роулинг К. Джоан. Гарри Поттер 1-5
19.
… пальто, притворился, ступил на тротуар, поболел за шахматиста, подышал, посчитал капли дождя, послушал часы, полежал на …
Рот Герхард. Автобиография Альберта Эйнштейна
20.
… охну, Не приму ничей совет. Поболею, да издохну… Чую, чаю вечный свет. Костоломная эпоха Воровски из …
Пригодич Василий. Ветер в ничто
21.
… победишь. Я бы за тебя поболела, да не хочу обижать остальных. Лучше смешаюсь с толпой и …
Пратчетт Терри. Море и рыбаки
22.
… то почему бы ему не поболеть с удовольствием. (Маграт в отличие от нее решительно запрещала своим …
Пратчетт Терри. Ведьмы за границей
23.
… то почему бы ему не поболеть с удовольствием. (Маграт в отличие от нее решительно запрещала своим … победишь. Я бы за тебя поболела, да не хочу обижать остальных. Лучше смешаюсь с толпой и …
Прэтчетт Терри. Плоский мир 1-13
24.
… спать хочу, не дают человеку поболеть, каждый тут высказывается, выступает. Мы с Тимошкой спать хотим. — Спите …
Проскурин Петр. Полуденные сны
25.
… играл. НЛО, оказывается, слабоваты насчет поболеть, как добрый футбол, сразу активизируются. А игра была — я те …
Прокопьев Сергей. Отелло с кочергой
26.
… Мать-отец мои пришлые были, поболели—поболели да и померли. Они через пустыню шли, а кто через …
Манова Елена. Рассказы и повести
27.
… Толстая старушка Авдотья Михайловна уезжала поболеть в город. Орлов не появился. А Никитушка стал смирный, словно …
Мамлеев Юрий. Блуждающее время
28.
… самой бы так-то голова поболела с похмелья… да. Тогда бы узнала, каково на свете жить …
Мамин-Сибиряк Д.Н.. Избранные произведения для детей
29.
… насколько я слышал. — Придется мне поболеть за них, — улыбнулся Томкинс. — Надо же поддержать дело межзвездных контактов …
Мартин Джордж. Рассказы
30.
… гады и несознательные эгоисты, нормально поболеть человеку не дают, он вынужден ходить на работу, а ему … вот удел тех, кто вздумал поболеть, не добравшись до вершин власти. И вдобавок ко всему — витающая …
Маринина А.Б.. Настя Каменская 1-25
Смотреть что такое ПОБОЛЕТЬ в других словарях:
ПОБОЛЕТЬ
поболеть 1. сов. неперех. В течение некоторого времени совершить действие, названное соответствующим беспрефиксным глаголом. 2. сов. неперех. В течение некоторого времени совершить действие, названное соответствующим беспрефиксным глаголом.<br><br><br>… смотреть
ПОБОЛЕТЬ
поболеть
похлопотать, подумать, похворать, позаботиться, побеспокоиться, поныть
Словарь русских синонимов.
.
ПОБОЛЕТЬ
1. поболе́ть,
поболе́ю,
поболе́ем,
поболе́ешь,
поболе́ете,
поболе́ет,
поболе́ют,
поболе́я,
поболе́л,
поболе́ла,
поболе́ло,
поболе́ли,
поболе́й,
поболе́йте,
поболе́вший,
поболе́вшая,
поболе́вшее,
поболе́вшие,
поболе́вшего,
поболе́вшей,
поболе́вшего,
поболе́вших,
поболе́вшему,
поболе́вшей,
поболе́вшему,
поболе́вшим,
поболе́вший,
поболе́вшую,
поболе́вшее,
поболе́вшие,
поболе́вшего,
поболе́вшую,
поболе́вшее,
поболе́вших,
поболе́вшим,
поболе́вшей,
поболе́вшею,
поболе́вшим,
поболе́вшими,
поболе́вшем,
поболе́вшей,
поболе́вшем,
поболе́вших
2.поболе́ть,
поболю́,
поболи́м,
поболи́шь,
поболи́те,
поболи́т,
поболя́т,
поболя́,
поболе́л,
поболе́ла,
поболе́ло,
поболе́ли,
поболи́,
поболи́те,
поболе́вший,
поболе́вшая,
поболе́вшее,
поболе́вшие,
поболе́вшего,
поболе́вшей,
поболе́вшего,
поболе́вших,
поболе́вшему,
поболе́вшей,
поболе́вшему,
поболе́вшим,
поболе́вший,
поболе́вшую,
поболе́вшее,
поболе́вшие,
поболе́вшего,
поболе́вшую,
поболе́вшее,
поболе́вших,
поболе́вшим,
поболе́вшей,
поболе́вшею,
поболе́вшим,
поболе́вшими,
поболе́вшем,
поболе́вшей,
поболе́вшем,
поболе́вших
(Источник: «Полная акцентуированная парадигма по А. А. Зализняку»)
…. смотреть
ПОБОЛЕТЬ
1)
-е́ю, -е́ешь; сов. разг.
1.Пробыть некоторое время больным.— Поболел, поболел и богу душу отдал. Серафимович, У обрыва.2.Побеспокоиться, позаботитьс… смотреть
ПОБОЛЕТЬ
1) Орфографическая запись слова: поболеть2) Ударение в слове: побол`еть3) Деление слова на слоги (перенос слова): поболеть4) Фонетическая транскрипция … смотреть
ПОБОЛЕТЬ
поболе’ть, поболе’ю, поболе’ем, поболе’ешь, поболе’ете, поболе’ет, поболе’ют, поболе’я, поболе’л, поболе’ла, поболе’ло, поболе’ли, поболе’й, поболе’йте, поболе’вший, поболе’вшая, поболе’вшее, поболе’вшие, поболе’вшего, поболе’вшей, поболе’вшего, поболе’вших, поболе’вшему, поболе’вшей, поболе’вшему, поболе’вшим, поболе’вший, поболе’вшую, поболе’вшее, поболе’вшие, поболе’вшего, поболе’вшую, поболе’вшее, поболе’вших, поболе’вшим, поболе’вшей, поболе’вшею, поболе’вшим, поболе’вшими, поболе’вшем, поболе’вшей, поболе’вшем, поболе’вших… смотреть
ПОБОЛЕТЬ
поболе’ть, поболю’, поболи’м, поболи’шь, поболи’те, поболи’т, поболя’т, поболя’, поболе’л, поболе’ла, поболе’ло, поболе’ли, поболи’, поболи’те, поболе’вший, поболе’вшая, поболе’вшее, поболе’вшие, поболе’вшего, поболе’вшей, поболе’вшего, поболе’вших, поболе’вшему, поболе’вшей, поболе’вшему, поболе’вшим, поболе’вший, поболе’вшую, поболе’вшее, поболе’вшие, поболе’вшего, поболе’вшую, поболе’вшее, поболе’вших, поболе’вшим, поболе’вшей, поболе’вшею, поболе’вшим, поболе’вшими, поболе’вшем, поболе’вшей, поболе’вшем, поболе’вших… смотреть
ПОБОЛЕТЬ
I сов. разг.1) (о человеке) estar enfermo (un tiempo)2) (позаботиться) preocuparse (por), desvelarse (por)II сов.(о теле, части тела, органе) doler (не… смотреть
ПОБОЛЕТЬ
приставка — ПО; корень — БОЛ; суффикс — Е; окончание — ТЬ; Основа слова: ПОБОЛЕВычисленный способ образования слова: Приставочно-суффиксальный или преф… смотреть
ПОБОЛЕТЬ
I(II), поболю/, -ли/шь, -ля/т (об ощущении боли)II(I), поболе/ю, -ле/ешь, -ле/ют (болеть некоторое время)
ПОБОЛЕТЬ
глагол соверш. вида что сделать?; неперех.Деепричастная форма: поболевпохворітиДієприслівникова форма: похворівши
ПОБОЛЕТЬ
сов рзг
(быть некоторое время больным) andar enfermo (doente); (о части тела, органе) doer vi, andar doendo
ПОБОЛЕТЬ
I побол`еть
сов. разг.
(о человеке) restare malato per qualche tempo
II побол`еть
сов.
(о боли, о голове, руке и т.п.) aver fatto un po’ male
поболит-поболит и пройдет — farà male per un po’, ma poi passa
III
1) сов. см. болеть
2) tifare per un po’
Итальяно-русский словарь.2003…. смотреть
ПОБОЛЕТЬ
ПОБОЛЕТЬ 1. совершенный вид неперех. В течение некоторого времени совершить действие, названное соответствующим беспрефиксным глаголом. 2. совершенный вид неперех. В течение некоторого времени совершить действие, названное соответствующим беспрефиксным глаголом…. смотреть
ПОБОЛЕТЬ
ПОБОЛЕТЬ. Поболит (рука, голова), да и перестанет. Он еще недельки с две полежит, поболеет. | Поболей обо мне, пожалей, погорюем вместе. Поболезновать о ком, то же, поболеть. Поболезный ты мой, болезный, сердечный, кого люблю и жалею. <br><br><br>… смотреть
ПОБОЛЕТЬ
ПОБОЛЕТЬ поболею, поболеешь, сов. Испытать боль или перенести болезнь, преимущ. недлительную, несильную. Голова поболела с утра, а к вечеру прошла. || Пробыть известное время больным (разг.). Поболел он, около месяца.<br><br><br>… смотреть
ПОБОЛЕТЬ
поболе||тьсов
1. (о человеке) εἶμαι ἄρρωστος, εἶμαι ἀσθενής, ἀσθενω (λίγο καιρό):
~л около недели ήταν ἄρρωστος ἐπί μιά σχεδόν ἐβδομάδα·
2. (о голове, зубе и т. п.) πονώ:
зуб ~л и перестал τό δόντι πόνεσε καί ξεπόνεσε…. смотреть
ПОБОЛЕТЬ
Czasownik поболеть pochorować pokibicować poboleć
ПОБОЛЕТЬ
Ударение в слове: побол`етьУдарение падает на букву: еБезударные гласные в слове: побол`еть
ПОБОЛЕТЬ
совер. пахварэць папахворваць, папахварэць пахварэцьпабалецьпоболеть душой за детей — пахварэць душой за дзяцейпоболеть за команду спорт. — пабалець з… смотреть
ПОБОЛЕТЬ
сов. разг.
1. ооруу, ооруп калуу, ноокастоо, ноокастап калуу, сыркоолоо, сыркоолоп калуу;
он поболел около месяца ал бир айдай ооруду;
2. (испытать боль) ооруу (мис. дененин бир жери)…. смотреть
ПОБОЛЕТЬ
I.авыртып алу; голова с утра поболела, а к вечеру прошла иртәнге якта баш авыртып алды, ә кичкә таба бетте II.чирләп (авырып) алу (яту); он поболел около месяца ул ай чамасы чирләп ятты… смотреть
ПОБОЛЕТЬ
Начальная форма — Поболеть, винительный падеж, действительный залог, единственное число, мужской род, неодушевленное, переходный, прошедшее время, совершенный вид… смотреть
ПОБОЛЕТЬ
Совер. пахварэць, пахварэць, пабалець, поболеть душой за детей — пахварэць душой за дзяцей поболеть за команду спорт. — пабалець за каманду
ПОБОЛЕТЬ
послабувати, пох(в)орувати, похворіти, понедугувати, покволіти, полежати, прилежати (якийсь час). Срв. Болеть 1.
ПОБОЛЕТЬ
поболеть похлопотать, подумать, похворать, позаботиться, побеспокоиться, поныть
ПОБОЛЕТЬ
поболеть
муддате дард кардан
поболеть
якчанд вақт бемор хобидан, муддате касал будан
ПОБОЛЕТЬ
побол’еть 1, -‘ею, -‘еет (к бол’еть 1)
ПОБОЛЕТЬ
Сов. 1. (bir az) ağrımaq; 2. kefsizləmək, kefsiz olmaq, naxoş olmaq, xəstə olmaq.
ПОБОЛЕТЬ
Начальная форма — Поболеть, действительный залог, переходный, совершенный вид
ПОБОЛЕТЬ
поболеть побол`еть 1, -`ею, -`еет (к бол`еть 1)